Na tabeli
idwypozyczenia | idplyty | idklienta | datawypozyczenia | oplataza1dzien | datazwrotu
----------------+---------+-----------+------------------+----------------+------------
1 | 7 | 1 | 2006-01-17 | 10 | 2006-11-19
2 | 8 | 2 | 2006-11-17 | 10 |
3 | 1 | 1 | 2006-11-17 | 4 | 2006-11-20
4 | 2 | 1 | 2007-02-26 | 4 |
5 | 1 | 2 | 2007-02-26 | 4 | 2007-03-01
6 | 3 | 2 | 2007-03-01 | 4 | 2007-03-01
7 | 5 | 2 | 2007-03-01 | 10 |
8 | 7 | 2 | 2007-03-01 | 4 |
9 | 4 | 1 | 2007-03-01 | 10 |
(9 rows)
wykonuje samozlaczenie w celu uzyskania idKienta posiadających płyte o idPlyty równym 7 i 8
zapytanie:
SELECT T1.idKlienta FROM Wypozyczenia T1 INNER JOIN Wypozyczenia T2 ON T1.idKlienta=T2.idKlienta WHERE T1.idplyty=8 AND T2.idplyty=7;
idklienta
-----------
2
(1 row)
W wyniku brakuje jednego rekordu. Jak widać płyte o idPlyty=7 posiada klient o idKlienta=1 a zapytanie zwróciło tylko jeden rekord.
Jak sie robi te samozłaczenia. To zapytanie przepisałem z ksiażki wiec musi być dobrze, może coś w posgres 8 zmieniono?