2015-10-05 2 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

В нем указано «Состояние столбца» в на предложение неоднозначно', что это значит? – kielou

+0

Это означает, что обе таблицы имеют столбец 'status', и БД не знает, какой из них следует принять. Я обновил запрос и добавил имя таблицы в столбец 'status'. –

+0

@kielou Я рекомендую вам прочитать страницу, предоставленную juergen, а затем посмотреть прямо в [MySQL 'JOIN' documentation] (https://dev.mysql.com/doc/refman/5.0/en/join.html). Только понимая, как все работает, вы можете решить подобные проблемы самостоятельно в будущем. На самом деле ваш вопрос был задан раньше, а [ответ] (http://stackoverflow.com/a/16092507/1326147) также состоял из 'LEFT JOIN', так как' EXCEPT' не существует в MySQL. – Armfoot

Смежные вопросы