not exists czy podzapytanie

not exists czy podzapytanie
PE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 45
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.

szweszwe
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1694
0

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

PE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 45
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

szweszwe
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1694
0

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

PE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 45
0

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

gośćabc
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
  • Postów: 500
0

wystarczy

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

GS
  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
SELECT distinct departament FROM tabela WHERE tabela.departament not in (SELECT departament from tabela where nazwisko = 'to_ktorego_nie_chcesz')

albo tak

Kopiuj
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
Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
1

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

D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Można i tak:

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.