Wyświetlanie elementów, które nie występują w drugiej tabeli powiązanej relacjami

0

Witam, mam taki fragment definicji bazy danych w PostgreSQL:

CREATE TABLE wyposazenie(
id_wyposazenia serial PRIMARY KEY,
nazwa char(30) not null
);

CREATE TABLE wyposazenie_samochodu(
wyposazenie_id serial PRIMARY KEY,
jakie_wyposaz integer REFERENCES wyposazenie ON DELETE RESTRICT ON
UPDATE CASCADE,
jakie_auto integer REFERENCES auto ON DELETE CASCADE ON
UPDATE CASCADE
);

w tabeli wyposażenie mam wszelkie możliwe wyposażenie samochodu np.:

1 abs
2 wspomaganie kierownicy
3 poduszki powietrzne

itd. itd.
a w tabeli wyposazenie_samochodu następujące dane, np.:

1 1 2
2 2 2
3 3 2

itd.

Problem polega na tym, że muszę wyświetlić te elementy z tabeli wyposażenie, które nie są przypisane do żadnego samochodu, tzn. nie występują jako powiązanie relacjami w tabeli wyposazenie_samochodu.
Wpisując zapytanie:

select distinct w.id_wyposazenia, w.nazwa from wyposazenie w, wyposazenie_samochodu s where not exists (select * from wyposazenie, wyposazenie_samochodu where w.id_wyposazenia <> s.jakie_wyposaz);

wypisuje mi te elementy, które są przypisane, ale nie mam w ogóle pomysłu na to, aby wyświetlić te nieprzypisane.
Jakieś wskazówki?

1

Spróbuj to:

 SELECT id_wyposazenia, nazwa FROM wyposazenie WHERE id_wyposazenia NOT IN (SELECT jakie_wyposaz FROM wyposazenie_samochodu);
0

Działa bez zarzutów, wielkie dzięki!

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