..


Sponzorované odkazy

Opakem INNER JOIN nebo získat záznamy se neshodují

Článek napsal Max Bossi

Kdo ví, co znalost SQL, je spojení. V našem průvodci a jiné výrobky jsme vysvětlili, jak spojit a jak je možné vytvořit vztahy mezi různými tabulkami v databázi.

Nejběžnější požadavek je splněn JOIN nástroj pro nalezení záznamů, mezi dvěma tabulkami, v takovém případě zachrání INNER JOIN ustanovení, které přesně lokalizuje a vrací pole, které splňují korespondence snažil do dvou nebo více zúčastněných tabulek ve spojení.

Mnohem méně intuitivní jinak je potřeba, aby stanovili oblasti, které nemají zápas v rámci spojení.

Vezměme si příklad.
Předpokládejme, že chcete spravovat databázi e-commerce skládá pouze ze dvou tabulek:

  • zákazníků (obsahující hlavní údaje zákazníka)
  • zakázky (s obsahem objednávky ze strany zákazníka)
Nyní předpokládejme, že chcete získat dva různé seznamy zákazníků: 1) seznam zákazníků, kteří již objednali, 2) seznam zákazníků, kteří dosud nic nekoupil.

Ke splnění prvního požadavku, samozřejmě, je docela jednoduchý:

 



 SELECT CUSTOMER.FIRST, CUSTOMER.LAST







 Z zákazníky







 INNER JOIN Objednávky







 ON = clienti.id ordini.id_cliente







 ORDER BY ASC CUSTOMER.LAST

 
a zatím žádný problém.

Ale jak můžeme udělat pro to, zvrátit výsledek? No ... Za prvé, nepoužívejte INNER JOIN, LEFT JOIN, ale najít odpovídající plné, ale ne dílčí, kde jsou však výsledky z levé tabulky se vrátil tak jako tak.
Bez tohoto se podíváme (pomocí klauzule WHERE) byly tyto záznamy chybí (tj. ne nalézt ve zprávě), pak označeny jako NULL (v SQL NULL je definována jako druh "zvláštní hodnotu", která identifikuje absence hodnoty ..)

Podívejme se na kód:

 



 SELECT CUSTOMER.FIRST, CUSTOMER.LAST







 Z zákazníky







 LEFT JOIN Objednávky







 ON = clienti.id ordini.id_cliente







 KDE SE NULL ordini.id_cliente







 ORDER BY ASC CUSTOMER.LAST

 
Výsledkem je, ve skutečnosti, že seznam jmen našich zákazníků, kteří nikdy nic nekoupil.

Ve stejné kategorii ...
E-Learning
MS Access (Advanced) MS Access (Advanced)
Naučte se vytvářet a spravovat databáze snadno a rychle. Od 29 €.
MySQL (kurz) MySQL (kurz)
Správa open-source databáze. Od 39 €.
SQL a databází (kurz) SQL a databází (kurz)
Vytváření a správa relační databáze. Od 39 €.
Sponzorované odkazy