Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Eliminar de un Select registros con valor de un campo igual (https://www.clubdelphi.com/foros/showthread.php?t=52223)

danilo_candales 14-01-2008 19:49:46

Eliminar de un Select registros con valor de un campo igual
 
A ver si me explico para que puedan ayudarme. Utilizo SQL Server 2005.

Estoy haciendo un proceso de migración de datos y me encontré con que en la BD origen hay una tabla llamemosle TABLA con un campo id_Tabla que no es llave primaria, pero no debe repetirse... pero sorpresa, se repite el Id no así el resto de los campos.
Por lo tanto, tenemos dos registros con id=45 y el resto de los campos diferentes...

Ahora, en la BD destino si tengo declarado el campo Id como Llave primaria y al hacer el select de la base origen viene el 45 repetido....

Como puedo hacer un select que ignore el id repetido?

Con "Distinct id, campo1, campos2 from TABLA" no me funciona como quiero ya que el resto de los campos es diferente.

Y lo otro: No me sirve hacer una función en Delphi ni nada... Es necesario que sea solo desde SQL Server.

No sé si me hice entender. Gracias a tdos.

egostar 14-01-2008 20:03:33

Cita:

Empezado por danilo_candales (Mensaje 258043)
A ver si me explico para que puedan ayudarme. Utilizo SQL Server 2005.

Estoy haciendo un proceso de migración de datos y me encontré con que en la BD origen hay una tabla llamemosle TABLA con un campo id_Tabla que no es llave primaria, pero no debe repetirse... pero sorpresa, se repite el Id no así el resto de los campos.
Por lo tanto, tenemos dos registros con id=45 y el resto de los campos diferentes...

Ahora, en la BD destino si tengo declarado el campo Id como Llave primaria y al hacer el select de la base origen viene el 45 repetido....

Como puedo hacer un select que ignore el id repetido?

Con "Distinct id, campo1, campos2 from TABLA" no me funciona como quiero ya que el resto de los campos es diferente.

Y lo otro: No me sirve hacer una función en Delphi ni nada... Es necesario que sea solo desde SQL Server.

No sé si me hice entender. Gracias a tdos.

Por lo que veo el Id_Tabla de la primera TABLA no tiene ningún uso práctico, así que yo lo omitiria de la consulta, crea un trigger para que sume y asigne el Id_Tabla en la base nueva y pasa los datos tal cual.

Salud OS

Paoti 14-01-2008 21:19:54

Hola....


yo lo que haria, es cargar los registros que no estan repetidos, si hay un registro, em tu caso el 45, no lo meto en la consulta y al final decido que hacer con elllos, cual registro introducir



esta consulta lo que haria seria discriminar todos los registros que viene duplicados y te devolvera solo los que son únicos



Código SQL [-]
select * from tabla t1 where 
t1.id not in (select t2.id from tabla t2 group by t2.id having count(t2.id) > 1)


y con esta consulta te tareria todos los registros que en el Id tengan más de uno,

Código SQL [-]
(select t2.id from tabla t2 group by t2.id having count(t2.id)

ahora que procedeciria, no se en tu casi si sacar los "más actuales" dependiendo de los otros campos o no sé.


El Pao.

danilo_candales 15-01-2008 15:32:55

Cita:

Empezado por egostar (Mensaje 258048)
Por lo que veo el Id_Tabla de la primera TABLA no tiene ningún uso práctico, así que yo lo omitiria de la consulta, crea un trigger para que sume y asigne el Id_Tabla en la base nueva y pasa los datos tal cual.

Salud OS

Gracias por tu participación. realmente si tiene uso el id, se hace referencia en otra tabla como llave foránea, por eso no puedo quitarla. Una de las razones de la migración también es la depuración, ya que la BD vieja está muy inconsistente. ¿Se nota?

Paoti: Tu solución me sirve perfectamente para esta necesidad. MUCHAS GRACIAS!

Saludos y que tengan todos un bonito día.


La franja horaria es GMT +2. Ahora son las 01:28:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi