2011-06-06 158 views
1

好的,所以我有一個客戶想要爲系統中的一羣學生輸出所有信息。MySQL條件選擇語句?

該輸出將被導入到Excel中進行操作。

所以,我的問題是,我想輸出從4桌

所有學生的信息

試鏡 安排試鏡 型材 試鏡次

所以,試鏡表獲取並錄入任何信息鏈接那裏給學生當試聽錄音。在此之前,db中沒有他們的試鏡。

所以,我要輸出一行是說,當他們預定的面試是每個學生,然後如果他們有他們的聽力已經導入的信息,但如果沒有,只是離開領域的空白。

我有這樣的事情,到目前爲止

"SELECT ".$fields." FROM profiles p, auditions a, scheduled_auditions s, 
audition_times t WHERE p.id=t.id AND t.id=s.id AND a.id=p.id" 

的問題是顯而易見的。它只會輸出有試鏡的人。那麼,我該如何寫一個有條件的select/where語句呢?我需要用一個查詢輸出,以便在Excel中打開時能夠正常工作。

謝謝你們。我很難過。

+0

如果可以的話,共享這些表的DDL代碼。 – 2011-06-06 22:24:47

回答

2

您想要執行外連接;即使聯接記錄爲空,外部聯接也會返回結果。

具體來說,在試鏡桌上指定一個LEFT OUTER JOIN將會強制返回所有學生的記錄,即使是沒有試鏡的記錄也會被返回。

+0

RIGHT OUTER可以同樣適用...適當的玩雜耍桌子。 – 2011-06-06 22:27:50

2

您是否考慮使用LEFT OUTER JOIN

如果您將表A和B連接到一個內部聯接,則只會獲得存在於A和B中的行。如果使用LEFT JOIN,您將獲得A中的所有行。其中一些行將包含數據從B存在。否則,來自B的那些列將是空的。

編輯:左JOIN B在邏輯上等同於b右鍵加入 - 如此爲所欲爲是最有意義的在你的頭上(感謝保羅!)。

+0

RIGHT OUTER也可以和適當的玩雜耍表一樣工作。 – 2011-06-06 22:25:50

2

聽起來像你只是需要一個外部聯接,這就像一個普通的聯接,但沒有匹配的鍵,它將只爲每個字段返回NULL。

SELECT * 
FROM profiles p 
LEFT OUTER JOIN audition_times t 
ON p.id=t.id 
LEFT OUTER JOIN scheduled_auditions s 
ON t.id=s.id 
LEFT OUTER JOIN auditions a 
ON a.id=p.id"