Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Comparacion de una concatenacion

Estas en el tema de Comparacion de una concatenacion en el foro de SQL Server en Foros del Web. Hola a todos, me gustaría que me ayuden en el siguiente problema: Tengo 2 tablas en mi base de datos tabla1 y tabla2 Quiero hacer ...
  #1 (permalink)  
Antiguo 14/02/2011, 09:46
 
Fecha de Ingreso: junio-2008
Ubicación: Osorno
Mensajes: 155
Antigüedad: 15 años, 9 meses
Puntos: 3
Comparacion de una concatenacion

Hola a todos, me gustaría que me ayuden en el siguiente problema:

Tengo 2 tablas en mi base de datos tabla1 y tabla2
Quiero hacer una consulta que me haga lo siguiente:
Concatenar los campos de la tabla1 y compararlos con la concatenación de los campos de la tabla2
si en esta comparación encuentra un dato igual, entonces debe eliminar ese registro en la tabla1.

Espero se entienda lo que quiero hacer.


Un ejemplo gráfico seria como:

Tabla1
Campo1|Campo2
Juan |Pérez

Tabla2
Campo1|Campo2
Juan |Pérez


Al concatenar quedarían a si

Concatenación tabla1 =juanperez

Concatenación tabla2 =juanperez

En este caso como las 2 concatenaciones son iguales
Debería eliminar el registro de la tabla1

Se puede hacer esto???

Última edición por proteus8; 14/02/2011 a las 09:53
  #2 (permalink)  
Antiguo 14/02/2011, 10:03
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 8 meses
Puntos: 180
Respuesta: Comparacion de una concatenacion

Claro que se puede hacer y muy sencillo

DELETE <Tutabla>
FROM (SELECT ID FROM <Tutabla> t1 WHERE EXISTS (SELECT * FROM <Tutabla2> t2 WHERE T1.nombre+apellido = t2.nombre+apellido))

Acomodalo a tus necesidades
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 14/02/2011, 10:34
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 2 meses
Puntos: 447
Respuesta: Comparacion de una concatenacion

Hola proteus8:

Poco hay que agregar al comentario que te hace el compañero iislas, estoy completamente de acuerdo en que es mejor utilizar el operador EXISTS. Sólo habría que complementar que la forma en que está comparando los registros (es decir con el operador + para concatenar) es válido sólo entre campos de tipo caracter. Es posible que en tu tabla tengas tanto campos tipo caracter como campos tipo numérico por lo tanto tendrías que aplicar conversiones o en su defecto comparar campo por campo, es decir algo como esto:

Código SQL:
Ver original
  1. DECLARE @TablaUno TABLE (id INT, descripcion VARCHAR(50))
  2. INSERT INTO @TablaUno VALUES (1, 'UNO')
  3. INSERT INTO @TablaUno VALUES (2, 'DOS')
  4. INSERT INTO @TablaUno VALUES (3, 'TRES')
  5. SELECT * FROM @TablaUno
  6.  
  7. DECLARE @TablaDos TABLE (id INT, descripcion VARCHAR(50))
  8. INSERT INTO @TablaDos VALUES (3, 'TRES')
  9. INSERT INTO @TablaDos VALUES (4, 'CUATRO')
  10. INSERT INTO @TablaDos VALUES (5, 'CINCO')
  11.  
  12. --Comparando campo por campo
  13. DELETE @TablaUno FROM @TablaUno T1
  14. WHERE EXISTS (
  15. SELECT * FROM @TablaDos T2 WHERE T1.id = T2.id AND T1.descripcion = T2.descripcion
  16. )
  17. SELECT * FROM @TablaUno
  18.  
  19. --Aplicando conversión de tipos
  20. DELETE @TablaUno FROM @TablaUno T1
  21. WHERE EXISTS (
  22. SELECT * FROM @TablaDos T2 WHERE CAST(T1.id AS VARCHAR) + T1.descripcion =
  23. CAST(T2.id AS VARCHAR) + T2.descripcion
  24. )
  25. SELECT * FROM @TablaUno

Te repito que es sólo un detalle que hay que considerar.

Saludos
Leo.
  #4 (permalink)  
Antiguo 14/02/2011, 12:11
 
Fecha de Ingreso: junio-2008
Ubicación: Osorno
Mensajes: 155
Antigüedad: 15 años, 9 meses
Puntos: 3
Respuesta: Comparacion de una concatenacion

Muchas gracias iislas y leonardo_josue por sus respuestas, me fueron de mucha ayuda, hice la consulta que me indico iislas y también las conversiones como me sugirió leonardo_josue y lo que le agregue a la concatenación fue un :
ISnULL(campo1,'') por que cuando uno de los campos concatenados es null deja la concatenación con valor null, entonces para evitar eso puse el ISnULL.

Muchas gracias!!!
  #5 (permalink)  
Antiguo 14/02/2011, 18:53
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 8 meses
Puntos: 180
Respuesta: Comparacion de una concatenacion

Que bueno que te sirvio y como aclaracion a mi codigo, tome NOMBRE y APELLIDO, que mencionas en tu posta original, de acuerdo con LEONARDO, cuando hay campos de diferente tipo, habria que usar CAST o CONVERT.
__________________
MCTS Isaias Islas

Etiquetas: comparacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:01.