Hai bisogno di aiuto con una query di selezione mysql
-
13-11-2019 - |
Domanda
Ho 3 tavolini
[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
.
Ho bisogno di creare una query di selezione che recupera tutto il CID di ciascun contatto, il loro nome, il loro numero di telefono se il PID è 1 e la loro e-mail tutto in una tabella. Quindi l'uscita sarà simile ad esempio.
cID | name | phone1 | email
----------------------------------------------
45 | John Smith | 1234567 | john.s@test.com
46 | Darth Vader | 9999999 | vader@deathstar.org
47 | Yoda | 1236547 |
-----------------------------------------------------------------------------
.
Ho provato a farlo come questo
SELECT contact.cID, name, phone, email FROM contact, phone, email
WHERE contact.cID = phone.cID AND contact.cID = email.cID AND phone.pID = 1;
.
Questo quasi lo fa, ma se un contatto non ha un numero di telefono o un'e-mail con il loro nome, allora saranno lasciati fuori.
Ho bisogno di mostrare tutti i contatti, indipendentemente dal tempo che hanno un'e-mail o un numero di telefono nel database.
Come posso realizzare questo?
Soluzione
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
.
In breve, è necessario inserire i criteri per il pID = 1
nella clausola ON quando si unisce phone
a contact
.In Additon, è necessario utilizzare i join sinistro per gestire il caso in cui non hanno un telefono o un'e-mail.