2013-04-20 111 views
1

我很難弄清楚如何編寫一個查詢來從一個表中選擇符合特定條件的所有行,並且如果存在與另一組條件匹配的數據。從表中選擇行並從其他表中選擇附加數據

表:書籍

id 
school 
isbn 
name 

表:訂單

id 
school 
department 
isbn 
quantity 

查詢我的是:

SELECT orders.*, books.name FROM orders 
LEFT JOIN books ON orders.isbn = books.isbn 
WHERE orders.school = 1 AND orders.department = 2 
     AND books.school = 1 

現在的問題是,如果一個學校還沒有添加他們的書籍,名字和姓名放入書本表中,我仍然希望獲得訂單。* books.name返回的數據設置爲null或som類似的東西。現在我得到零行。有一種方法可以用一個查詢來做到這一點嗎?

+1

請張貼一些示例數據和所需的輸出?你的情況可能會有一些問題 – 2013-04-20 19:18:01

回答

2

移動

and books.school = 1 

從其中從子句子句的。

left join books on orders.isbn = books.isbn 
and books.school = 1 

編輯從這裏開始

爲raheel誰說,這並不重要。使用隨我下載的MySQL附帶的世界數據庫,此查詢

select c.name, city.name cityname 
from country c left join city on c.code = city.countrycode 
AND city.name = 'toronto' 
order by cityname; 

返回239行。此查詢:

select c.name, city.name cityname 
from country c left join city on c.code = city.countrycode 
WHERE city.name = 'toronto' 
order by cityname; 

返回1行。我認爲它很重要

+0

從你的世界數據庫例子 – 2013-04-20 19:18:50

+0

並不重要,如果你從第一個查詢中刪除了'AND city.name ='toronto'',查詢的結果是什麼? – didierc 2013-04-20 21:19:02

+0

這按預期工作!謝謝!你介意多解釋一下爲什麼? – grandnasty 2013-04-20 21:20:11

相關問題