..


Gesponsorde links

Het tegenovergestelde van een INNER JOIN of om de records te verkrijgen niet overeenkomen

Artikel geschreven door Max Bossi

Wie weet wat kennis van SQL is de JOIN. In onze gidsen en andere artikelen hebben we uitgelegd hoe de JOIN en hoe kunt u de relaties tussen verschillende tabellen in een database.

De meest voorkomende eis wordt voldaan door het instrument JOIN om wedstrijden tussen twee tabellen, in welk geval redt de INNER JOIN-component, die nauwkeurig lokaliseert en geeft de velden die de correspondentie te voldoen gezocht binnen de betrokken twee of meer tabellen vinden in de JOIN.

Veel minder intuïtief van het tegendeel is de noodzaak om de velden die een wedstrijd niet binnen de JOIN te identificeren.

Laten we een voorbeeld nemen.
Stel, u wilt een database van een e-commerce bestaat uit slechts twee tabellen te beheren:

  • klanten (met de stamgegevens van de klant)
  • orders (met bestellingen van klanten)
Stel nu dat u twee verschillende lijsten van klanten uit te pakken: 1) een lijst van klanten die al een bestelling heeft geplaatst, 2) de lijst van klanten die nog niet hebben gekocht niets.

Om te voldoen aan de eerste eis is natuurlijk, is heel eenvoudig:

 



 SELECT CUSTOMER.FIRST, CUSTOMER.LAST







 FROM klanten







 INNER JOIN Bestellingen







 ON = clienti.id ordini.id_cliente







 ORDER BY ASC CUSTOMER.LAST

 
en tot nu toe geen probleem.

Maar hoe kunnen we doen om het resultaat te keren? Nou ... De eerste, geen gebruik maken van een INNER JOIN, maar een LEFT JOIN om een wedstrijd vol maar niet gedeeltelijk, waar echter de resultaten van de linker tabel zijn toch terug te vinden.
Zonder deze zullen we (met behulp van de WHERE clausule) de records ontbreken (dus niet vinden in het verslag), dan geïdentificeerd als NULL (in de SQL NULL wordt gedefinieerd als een soort van "speciale waarde", dat een afwezigheid van waarde identificeert ..)

Laten we de code te zien:

 



 SELECT CUSTOMER.FIRST, CUSTOMER.LAST







 FROM klanten







 LEFT JOIN Bestellingen







 ON = clienti.id ordini.id_cliente







 WAAR IS NULL ordini.id_cliente







 ORDER BY ASC CUSTOMER.LAST

 
Het resultaat is, in feite, de lijst van de namen van onze klanten die nog nooit iets gekocht.

In dezelfde categorie ...
E-Learning
MS Access (Advanced) MS Access (Advanced)
Leer hoe het maken en beheren databases snel en gemakkelijk. Vanaf 29 €.
MySQL (Cursus) MySQL (Cursus)
Beheer van de open source database. Van 39 €.
SQL en Database (Cursus) SQL en Database (Cursus)
Maken en beheren van relationele databases. Van 39 €.
Gesponsorde links