簡體   English   中英

MySQL 有條件的 select 語句?

[英]MySQL conditional select statement?

好的,所以我有一個客戶想要 output 系統中一堆學生的所有信息。

這個 output 將被導入到 Excel 中進行操作。

所以,我的問題是我想 output 來自 4 個表的所有學生信息

試鏡 預定試鏡 簡介 試鏡時間

因此,當試聽被記錄時,試聽表會獲取並將那里的任何信息鏈接到學生的條目。 在此之前,數據庫中沒有他們的試鏡。

所以,我想 output 為每個學生寫一行,說明他們計划的試鏡時間,然后如果他們已經進行了試鏡,則導入信息,但如果沒有,則將該字段留空。

到目前為止我有這樣的東西

"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"

問題很明顯。 它只適用於有試鏡的 output 人。 那么,可以這么說,我該如何編寫條件選擇/where 語句? 我需要用一個查詢來 output ,這樣當我在 excel 中打開它時它就可以工作。

多謝你們。 我難住了。

您是否考慮過使用LEFT OUTER JOIN

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

編輯: A LEFT JOIN B在邏輯上等同於B RIGHT JOIN A - 所以做你頭腦中最有意義的事情(謝謝 Paul。)。

您要執行外部聯接; 即使連接的記錄是 null,外連接也會返回結果。

具體來說,在您的情況下,在試鏡表上指定 LEFT OUTER JOIN 將強制返回所有學生的記錄,即使是沒有試鏡的記錄。

聽起來你只需要一個外連接,這就像一個普通的連接,但是如果沒有匹配的鍵,它只會為每個字段返回 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"

為此,您需要使用外部聯接。 看看http://en.wikipedia.org/wiki/Join_(SQL)#Outer_joins

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM