Como comparar campos de tres tablas distintas
Publicado por Yoel (13 intervenciones) el 27/09/2019 23:45:09
Tengo la siguiente situación: Estoy haciendo una comparación en tres las tablas,en dos ellas hay campos vacíos (college, contact_person), los cuales necesito excluir de la comparación y que solo me de las diferencia de los que no coincidan y no sean vacíos.
El problema que tengo, es que si coloco la condición de quitar los que sean vacíos en la columna de correo me quita los del teléfono que son distintos y si quito los vació de la columna de teléfono de cualquiera de las tablas (college, contact_person) me sucede que me quita los de correo que son distintos.
El resultado que necesito, es que me de los datos que sean distintos tanto en correo como en teléfono y que no sean vacíos. A continuación le dejo mi consulta a ver si me pueden ayudar.
Gracias.
Consulta completa:
Condición que coloco para las diferencias:
Condición para quitar los vacíos
Le coloco un ejemplo de lo que me devuelve y lo que necesito:
Este registro, muestra el segundo teléfono vació pero el primero esta correcto y el correo es distinto, me tiene que mantener el registro y eso no me esta sucediendo porque al estar el segundo teléfono vació me quita el registro.
Teléfono 1 de BD: 555XXXXXXX
Teléfono 2 de BD:
Teléfono Contacto:
Teléfono de Drive: 555XXXXXX
Correo 1 de BD: [email protected]
Correo de Drive: [email protected]
El problema que tengo, es que si coloco la condición de quitar los que sean vacíos en la columna de correo me quita los del teléfono que son distintos y si quito los vació de la columna de teléfono de cualquiera de las tablas (college, contact_person) me sucede que me quita los de correo que son distintos.
El resultado que necesito, es que me de los datos que sean distintos tanto en correo como en teléfono y que no sean vacíos. A continuación le dejo mi consulta a ver si me pueden ayudar.
Gracias.
Consulta completa:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT college.CollegeID,
college.SEPEconomicKey,
college.Namecol,
contact_person.Email,
datosdriver.correo,
college.Telephone1,
datosdriver.telefono,
nivel,
NameLev
FROM college
INNER JOIN contact_person ON college.CollegeID = contact_person.CollegeID
INNER JOIN datosdriver ON college.SEPEconomicKey = datosdriver.clave
INNER JOIN level ON level.levelID = college.SEPLavel
WHERE 1 AND datosdriver.correo <> (contact_person.Email OR contact_person.Emal2)
AND datosdriver.telefono <> (college.Telephone1 OR college.Telephone2)
AND (contact_person.Emal2 <> '' OR college.Telephone2 <> '' )
ORDER BY SEPEconomicKey ASC
1
2
3
WHERE 1
AND datosdriver.correo <> (contact_person.Email OR contact_person.Emal2)
AND datosdriver.telefono <> (college.Telephone1 OR college.Telephone2)
Condición para quitar los vacíos
1
AND (contact_person.Emal2 <> '' OR college.Telephone2 <> '' )
Le coloco un ejemplo de lo que me devuelve y lo que necesito:
Este registro, muestra el segundo teléfono vació pero el primero esta correcto y el correo es distinto, me tiene que mantener el registro y eso no me esta sucediendo porque al estar el segundo teléfono vació me quita el registro.
Teléfono 1 de BD: 555XXXXXXX
Teléfono 2 de BD:
Teléfono Contacto:
Teléfono de Drive: 555XXXXXX
Correo 1 de BD: [email protected]
Correo de Drive: [email protected]
Valora esta pregunta


0