..
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:
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.LASTi 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.LASTW rezultacie, w rzeczywistości, listę nazw naszych klientów, którzy nigdy nie kupił nic.
| |
MS Access (zaawansowane)
Dowiedz się, jak tworzyć i zarządzać bazami danych szybko i łatwo. Począwszy od 29 €. |
| |
MySQL (Kurs)
Zarządzanie bazą danych open-source. Od 39 €. |
| |
SQL i bazy danych (pole)
Tworzenie i zarządzanie relacyjnymi bazami danych. Od 39 €. |