..


Linki sponsorowane

Przeciwieństwem INNER JOIN lub uzyskać rekordy nie pasują

Artykuł napisany przez Max Bossi

Kto wie, co znajomość SQL JOIN. W naszych przewodników i innych artykułów wyjaśniliśmy jak JOIN i jak można tworzyć relacje między różnymi tabelami w bazie danych.

Najczęściej wymóg ten jest spełniony przez instrument JOIN znaleźć mecze między dwiema tabelami, w takim przypadku ratuje INNER JOIN klauzulę, która dokładnie lokalizuje i zwraca pola, które spełniają korespondencji szukać w obrębie dwóch lub więcej tabel związanych w JOIN.

Znacznie mniej intuicyjny, że jest inaczej należy określić pola, które nie mają meczu w JOIN.

Weźmy przykład.
Załóżmy, że chcesz administrować bazą danych z e-commerce składa się tylko z dwóch tabel:

  • klientów (zawierające danych podstawowych klienta)
  • zamówienia (zawierających zlecenia składane przez klientów)
Teraz załóżmy, że chcesz, aby wyodrębnić dwie różne listy klientów: 1) listę klientów, którzy już złożył zamówienie, 2) listę odbiorców, którzy jeszcze nie kupili nic.

Aby spełnić pierwszy warunek, oczywiście, jest bardzo prosta:

 



 SELECT CUSTOMER.FIRST, CUSTOMER.LAST







 Z klientów







 INNER JOIN Zamówienia







 ON = clienti.id ordini.id_cliente







 ORDER BY ASC CUSTOMER.LAST

 
i do tej pory nie ma problemu.

Ale jak możemy zrobić, aby odwrócić wynik? Cóż ... Po pierwsze, nie należy używać INNER JOIN, ale LEFT JOIN w celu znalezienia odpowiedniego pełne, ale nie częściowy, gdzie jednak wyniki z lewej tabeli są zwracane tak.
Bez tego będziemy szukać (przy użyciu klauzuli WHERE) zapisy brakuje (np. nie znaleźć w raporcie), a następnie zidentyfikowany jako NULL (w SQL NULL jest zdefiniowany jako rodzaj "szczególnej wartości", który identyfikuje braku wartości ..)

Spójrzmy na kod:

 



 SELECT CUSTOMER.FIRST, CUSTOMER.LAST







 Z klientów







 LEFT JOIN Zamówienia







 ON = clienti.id ordini.id_cliente







 WHERE IS NULL ordini.id_cliente







 ORDER BY ASC CUSTOMER.LAST

 
W rezultacie, w rzeczywistości, listę nazw naszych klientów, którzy nigdy nie kupił nic.

W tej samej kategorii ...
E-Learning
MS Access (zaawansowane) MS Access (zaawansowane)
Dowiedz się, jak tworzyć i zarządzać bazami danych szybko i łatwo. Począwszy od 29 €.
MySQL (Kurs) MySQL (Kurs)
Zarządzanie bazą danych open-source. Od 39 €.
SQL i bazy danych (pole) SQL i bazy danych (pole)
Tworzenie i zarządzanie relacyjnymi bazami danych. Od 39 €.
Linki sponsorowane