2016-04-01 10 views
0

Hallo Ich versuche, ein Problem mit negiert Daten zu lösen Ich habe zwei TabellenSQL Negation in where-Klausel

Klassen:

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

Listen:

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

Klasse id Referenzen id_class

und ich möchte die Daten auswählen, die nicht in der Liste Tabelle ist. Ich habe es versucht:

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

Aber kein Ergebnis, denke, es ist nicht korrekt Jede Lösung?

+0

Versuchen Sie nicht in' oder' nicht exists'. –

Antwort

1

Sie benötigen ein 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 

oder auch NOT EXISTS verwenden können:

`
select c.id, c.name 
from classes c 
where not exists (select * 
        from lists l 
        where l.id_class=c.id)