2016-04-01 4 views
0

Привет Я пытаюсь решить проблему с отрицанием данных У меня есть две таблицыSQL отрицанием в котором пункт

Классы:

+----+----------+--+ 
| id | name | | 
+----+----------+--+ 
| 1 | 'First' | | 
| 2 | 'Second' | | 
+----+----------+--+ 

Списки:

+----+----------+--+ 
| id | id_class | | 
+----+----------+--+ 
| 1 |  1 | | 
+----+----------+--+ 

ссылки идентификатор класса id_class

и я хочу выбрать данные, которых нет в таблице списков. Я пробовал:

SELECT c.name FROM classes c JOIN lists l ON (l.id_class=c.id) WHERE l.id_class!=c.id 

Но никакого результата, думаю, это не правильно. Какие-нибудь решения?

+0

Попробуйте 'не в' или' не exists'. –

ответ

1

Вам нужен LEFT JOIN:

SELECT c.id, c.name 
from classes c 
left join lists l on (l.id_class=c.id) 
where l.id_class is null 

или, вы можете также использовать NOT EXISTS:

select c.id, c.name 
from classes c 
where not exists (select * 
        from lists l 
        where l.id_class=c.id) 
Смежные вопросы