Self Join daje możliwość wyświetlenia np. działów firmy, pracujących pod tym samym adresem.
Przykład wykonano na bazie PostgreSQL.
Na początek stworzenie tabeli testowej:
CREATE TABLE testSelfJoin (id SERIAL NOT NULL, nazwa VARCHAR(50), adres VARCHAR(50) );
INSERT INTO testSelfJoin (nazwa, adres) VALUES ('Marketing', 'Warszawa');
INSERT INTO testSelfJoin (nazwa, adres) VALUES ('Administracja', 'Warszawa');
INSERT INTO testSelfJoin (nazwa, adres) VALUES ('Ksiegowosc', 'Warszawa');
INSERT INTO testSelfJoin (nazwa, adres) VALUES ('Programisci', 'Bydgoszcz');
SELECT * from testSelfJoin;
Efekt:
id nazwa adres
1 Marketing Warszawa
2 Ksiegowosc Warszawa
3 Administracja Warszawa
4 Programisci Bydgoszcz
I kluczowe zapytanie:
SELECT d1.nazwa
FROM testSelfJoin d1
JOIN testSelfJoin d2 USING (adres)
WHERE d1.nazwa NOT LIKE d2.nazwa
GROUP BY d1.nazwa;
Efekt:
nazwa
------------
Marketing
Ksiegowosc
Administracja