SQL – wyszukiwanie rekordów mających identyczne pole

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

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *