not exists czy podzapytanie

0

Mam prostą tabelę z kolumnami nazwisko i departament.
Chciałbym wybrać te departamenty gdzie nie występuje pracownik o okreslonym nazwisku.
Mogę prosić o podpowiedź ?
Dzięki.

0

Mniej więcej coś takiego:
SELECT departament FROM tabela WHERE nazwisko != 'to_ktorego_nie_chcesz'

0

tak próbowałem ale to nie działa bo :
jezeli mamy:

departament - 4, nazwisko - kowalski
departament - 4, nazwisko - nowak

to przy takim zapytaniu zwróci i tak departament 4

0

To w takim razie może tak:
SELECT departament FROM tabela WHERE departament != (SELECT departament FROM tabela WHERE nazwisko = 'to_ktorego_nie_chcesz')

0

uff, poradzilem sobie :)
SELECT departament FROM tabela WHERE tabela.departament not in (SELECT departament from tabela where nazwisko = 'to_ktorego_nie_chcesz')

0

wystarczy

SELECT departament FROM tabela WHERE nazwisko <> 'to którego nie chcesz'

1
SELECT distinct departament FROM tabela WHERE tabela.departament not in (SELECT departament from tabela where nazwisko = 'to_ktorego_nie_chcesz')

albo tak

SELECT distinct departament  FROM tabela a WHERE  (SELECT count(*) from tabela b  where b.nazwisko = 'to_ktorego_nie_chcesz' and b.departament = a.departament )=0
1

http://sqlfiddle.com/#!11/1ae8f/2
Moje (ostatnie), nie dość, że zwraca dobre wyniki, to jeszcze czasem wygrywa :)

0

Można i tak:

select departament
from tabela
group by departament
having list(distinct(nazwisko)) not containing 'kowalski'

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