2015-10-05 88 views
0

我有兩個表(書籍和借閱)。除了查詢以外遇到問題

我想從表Books中選擇全部。 但首先它會檢查BookID是否存在於表Borrowed中,如果它存在且其Status = 1,它將不會被包含在select *語句中。

我都試過,但它不工作

select * from Books 
except 
select `BookdID` where `Status`=1 

請幫助我。這是我的表

書籍:

| BookID  | Title  | Author  | 
|:-----------|------------:|:------------:| 
| 1   | The Stars | William Evan | 
| 2   | Science 3 | Vhong Navaro | 
| 3   | Let It Burn | Jun Ryl  | 
| 4   | Sky Below | Jason Midfle | 
| 5   | Wish It  | Shan Uddle | 

借:

| BookID  | BorrowerID | Status  | 
|:-----------|------------:|:------------:| 
| 6   | 12   | 0   | 
| 5   | 4   | 0   | 
| 2   | 3   | 1   | 
| 18   | 6   | 1   | 
| 5   | 3   | 0   | 

我的目標輸出:

| BookID  | Title  | Author  | 
|:-----------|------------:|:------------:| 
| 1   | The Stars | William Evan | 
| 3   | Let It Burn | Jun Ryl  | 
| 4   | Sky Below | Jason Midfle | 
| 5   | Wish It  | Shan Uddle | 
    *(BookID 2 is is not shown because in the table `Borrowed`, BookID 2's `Status` = 1)* 
+0

[在查詢中使用除外時出現錯誤]的可能重複(http://stackoverflow.com/questions/16092353/error-when-using-except-in-a-query) – Armfoot

回答

3
select b1.* 
from Books b1 
left join Borrowed b2 on b1.bookid = b2.bookid 
        and b2.`Status` = 1 
where b2.bookid is null 

this great explanation of joins

+0

它說'列'狀態'在on子句含糊不清「,這是什麼意思? – kielou

+0

這意味着兩個表都有一個「狀態」列,並且數據庫不知道要採取哪一個。我更新了查詢並將表名添加到'status'列。 –

+0

@kielou我建議您閱讀juergen提供的頁面,然後直接查看[MySQL的'JOIN'文檔](https://dev.mysql.com/doc/refman/5.0/en/join.html)。只有瞭解事情的運作方式,你纔有可能在未來自己解決類似的問題。其實你的問題已經被問過了,[答案](http://stackoverflow.com/a/16092507/1326147)也由'LEFT JOIN'組成,因爲'EXCEPT'在MySQL中不存在。 – Armfoot