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.
not exists czy podzapytanie
- Rejestracja: dni
- Ostatnio: dni
- Postów: 45
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Kraków
- Postów: 1694
Mniej więcej coś takiego:
SELECT departament FROM tabela WHERE nazwisko != 'to_ktorego_nie_chcesz'
- Rejestracja: dni
- Ostatnio: dni
- Postów: 45
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
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Kraków
- Postów: 1694
To w takim razie może tak:
SELECT departament FROM tabela WHERE departament != (SELECT departament FROM tabela WHERE nazwisko = 'to_ktorego_nie_chcesz')
- Rejestracja: dni
- Ostatnio: dni
- Postów: 45
uff, poradzilem sobie :)
SELECT departament FROM tabela WHERE tabela.departament not in (SELECT departament from tabela where nazwisko = 'to_ktorego_nie_chcesz')
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Szczecin
- Postów: 500
wystarczy
SELECT departament FROM tabela WHERE nazwisko <> 'to którego nie chcesz'
- Rejestracja: dni
- Ostatnio: dni
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
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2794
http://sqlfiddle.com/#!11/1ae8f/2
Moje (ostatnie), nie dość, że zwraca dobre wyniki, to jeszcze czasem wygrywa :)