
detectar valores repetidos en un conjunto de campos
Publicado por ROCIO (2 intervenciones) el 12/06/2014 19:07:55
Hola a tod@s!
A ver si me pueden ayudar...
Necesito saber si el valor que se repite entre tres campos de una tabla, también se repite entre tres campos de otra tabla.
Me explico mejor...
Tengo los nombre de personas en dos tablas, ambas con campos paterno, materno, nombre, pero vienen desordenados los campos (osea, el nombre podría venir en el campo de apellidos). Para un trabajo que realizo, necesito comparar si un apellido se repite en una tabla tb se repite en la otra.
Por ejemplo,
si en la tabla A ('gonzalez','gonzalez','fernando') se repite gonzalez, al cruzarlo bajo ciertas condiciones, tambien pueda distinguir que gonzalez está en dos campos de la tabla B.
Del mismo modo, este filtro dejará fuera el cruce de ('gonzalez','gonzalez','fernando') con ('gonzalez','perez','fernando') .
Para mostrar mejor lo que tengo, muestro mi consulta, a la que le falta el filtro mencionado:
No sé si fui suficientemente clara. Espero que alguien me pueda ayudar.
Mil gracias!
A ver si me pueden ayudar...
Necesito saber si el valor que se repite entre tres campos de una tabla, también se repite entre tres campos de otra tabla.
Me explico mejor...
Tengo los nombre de personas en dos tablas, ambas con campos paterno, materno, nombre, pero vienen desordenados los campos (osea, el nombre podría venir en el campo de apellidos). Para un trabajo que realizo, necesito comparar si un apellido se repite en una tabla tb se repite en la otra.
Por ejemplo,
si en la tabla A ('gonzalez','gonzalez','fernando') se repite gonzalez, al cruzarlo bajo ciertas condiciones, tambien pueda distinguir que gonzalez está en dos campos de la tabla B.
Del mismo modo, este filtro dejará fuera el cruce de ('gonzalez','gonzalez','fernando') con ('gonzalez','perez','fernando') .
Para mostrar mejor lo que tengo, muestro mi consulta, a la que le falta el filtro mencionado:
1
2
3
4
5
6
7
select DISTINCT *
from tabla1 R,
tabla2 C
WHERE R.AP_PATERNO IN (C.AP_PATERNO, C.AP_MATERNO, C.NOMBRE) -- que el paterno esté contenido en el nombre de la tabla C
AND R.AP_MATERNO IN (C.AP_PATERNO,C.AP_MATERNO,C.NOMBRE) -- que el materno esté contenido en el nombre de la tabla C
AND R.NOMBRE IN (C.AP_PATERNO,C.AP_MATERNO,C.NOMBRE) -- que el nombre esté contenido en el nombre de la tabla C
AND (R.AP_PATERNO <> R.NOMBRE OR R.AP_MATERNO <> R.NOMBRE) -- que haya al menos un campo distinto y no cruce los ('gonzalez','gonzalez','gonzalez')
No sé si fui suficientemente clara. Espero que alguien me pueda ayudar.
Mil gracias!
Valora esta pregunta


0