Necesitan un poco de ayuda con una consulta SELECT de MySQL
-
13-11-2019 - |
Pregunta
Tengo 3 tablas
[contact]
------------------
cID (PRIMARY KEY, INT) || name || lastupdate (TIMESTAMP)
[phone]
----------------------
cID (FOREIGN KEY, linked to contact.cID) || phonenumber || pID (phone number ID, since each contact can have many numbers)
[email]
------------------------
cID (FOREIGN KEY) || email
Necesito hacer una consulta de selección que va a obtener todos los cID de cada contacto, su nombre, su número de teléfono si el pID es 1 y su correo electrónico, todo en una tabla.De modo que el resultado sería parecido a este, por ejemplo.
cID | name | phone1 | email
----------------------------------------------
45 | John Smith | 1234567 | john.s@test.com
46 | Darth Vader | 9999999 | vader@deathstar.org
47 | Yoda | 1236547 |
-----------------------------------------------------------------------------
He intentado hacerlo como este
SELECT contact.cID, name, phone, email FROM contact, phone, email
WHERE contact.cID = phone.cID AND contact.cID = email.cID AND phone.pID = 1;
Esto casi lo hace, pero si un contacto no tiene un número de teléfono o un correo electrónico con su nombre, a continuación, van a ser dejados de lado.
Necesito mostrar todos los contactos, sin importar el clima que tiene un correo electrónico o un número de teléfono en la base de datos.
¿Cómo puedo lograr esto?
Solución
Select c.cID, C.name, P.phone As phone1, E.email
From contact As C
Left Join phone As P
On P.cID = C.cID
And P.pID = 1
Left Join email As E
On E.cID = C.cID
En pocas palabras, usted necesita para poner los criterios para la pID = 1
en la cláusula ON a la hora de incorporarse phone
a contact
.Además, usted necesita utilizar la Izquierda se Une para manejar el caso en el que no tienen un teléfono o correo electrónico.