Dlaczego zapytanie z zagnieżdżonym SELECT działa tylko z operatorem równości, przy negacji dzieją się dziwne rzeczy?

0

Mam za zadanie wskazać nauczycieli, którzy nie są wychowawcami żadnych klas. Zrobiłem takie zapytanie, ale tylko z operatorem "=" działa ono poprawnie (w sensie pokazuje nauczycieli o takich ID jak mają wychowawcy klas), próbowałem negacji na różne sposoby; NOT, IS NOT, <>, != ale żaden nie działa a wynik pokazuje wszystkich bez wyjątku sklonowanych kilka razy. Pracuję w DB Browser for SQLite.

SELECT nauczyciel_id, imie, nazwisko FROM nauczyciele, klasy
WHERE nauczyciele.nauczyciel_id = (SELECT klasy.wychowawca_id);
1

A nie można prościej ?

SELECT nauczyciel_id, imie, nazwisko
FROM nauczyciele LEFT JOIN klasy ON nauczyciele.nauczyciel_id = klasy.wychowawca_id
WHERE klasy.wychowawca_id Is Null

1

@pawellosu2:albo spróbuj złączenia z wykorzystaniem NOT IN:

select a.nauczyciel_id, a.imie, a.nazwisko
from nauczyciele a
where 
a.nauczyciel_id not in (select b.wychowawca_id from klasy b)

1 użytkowników online, w tym zalogowanych: 0, gości: 1