Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-01-2008
danilo_candales danilo_candales is offline
Miembro
 
Registrado: nov 2007
Posts: 28
Poder: 0
danilo_candales Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 14-01-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por danilo_candales Ver Mensaje
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
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #3  
Antiguo 14-01-2008
Avatar de Paoti
Paoti Paoti is offline
Miembro
 
Registrado: may 2003
Ubicación: Monterrey. N.L., México
Posts: 612
Poder: 21
Paoti Va por buen camino
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.
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás...

análisis de información
análisis y diseño de sistemas

Paoti Rios Reséndiz
Responder Con Cita
  #4  
Antiguo 15-01-2008
danilo_candales danilo_candales is offline
Miembro
 
Registrado: nov 2007
Posts: 28
Poder: 0
danilo_candales Va por buen camino
Cita:
Empezado por egostar Ver Mensaje
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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ComboBox igual al SELECT de html walito Varios 1 25-09-2007 19:57:41
Selección del valor más repetido en una SELECT MissileRider Firebird e Interbase 1 18-09-2007 01:17:06
valor de SELECT COUNT maruenda SQL 15 25-05-2007 22:58:38
Capturar el valor del Select elcigarra PHP 8 13-05-2006 08:54:04
Select Max siempre devuelve valor FernanGil Conexión con bases de datos 3 06-10-2003 15:55:36


La franja horaria es GMT +2. Ahora son las 04:06:47.


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
Copyright 1996-2007 Club Delphi