2011-02-13 62 views
0

我有3個表需要與一個MySQL SELECT查詢一些幫助

[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 

我需要做一個選擇查詢,將獲取所有每個聯繫人,他們的名字的CID,他們的電話號碼,如果PID爲1和他們的電子郵件都在一張桌子上。 所以輸出將看起來像這樣。

cID | name    | phone1 | email 
---------------------------------------------- 
45 | John Smith   | 1234567 | [email protected] 
46 | Darth Vader  | 9999999 | [email protected] 
47 | Yoda    | 1236547 | 
----------------------------------------------------------------------------- 

我試圖做這樣的

SELECT contact.cID, name, phone, email FROM contact, phone, email 
WHERE contact.cID = phone.cID AND contact.cID = email.cID AND phone.pID = 1; 

這幾乎做的,但如果接觸沒有任何一個電話號碼或通過他們的名字的電子郵件,然後他們就會被排除在外。
我需要顯示所有聯繫人,無論天氣他們在數據庫中有電子郵件還是電話號碼。

我該如何做到這一點?

回答

3
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 

總之,你需要把標準的pID = 1 ON子句中加入phonecontact時。另外,您需要使用左連接來處理他們沒有電話或電子郵件的情況。

+1

以秒爲單位打敗我。做一個代碼審查,並獲得橙色欄。榮譽。 – 2011-02-13 23:57:27