SQLite Self-Join
samenvatting: in deze tutorial leert u over een speciaal type join genaamd SQLite self-join waarmee u een tabel aan zichzelf kunt verbinden.
merk op dat u bekend moet zijn met INNER JOIN
en LEFT JOIN
voordat u verder gaat met deze tutorial.
Inleiding tot SQLite self-join
De self-join is een speciaal soort joins waarmee u een tabel aan zichzelf kunt koppelen met behulp van LEFT JOIN
of INNER JOIN
clausule. U gebruikt self-join om een resultaatset te maken die de rijen verbindt met de andere rijen binnen dezelfde tabel.
omdat u in een query niet meer dan één tabel naar dezelfde tabel kunt verwijzen, moet u een tabelalias gebruiken om de tabel een andere naam toe te wijzen wanneer u self-join gebruikt.
De self-join vergelijkt waarden van dezelfde of verschillende kolommen in dezelfde tabel. Slechts één tabel is betrokken bij de self-join.
u gebruikt vaak zelf-join om de relatie ouders/Kind opgeslagen in een tabel te bevragen of om lopende totalen te verkrijgen.
SQLite self-join examples
We zullen de employees
tabel gebruiken in de voorbeelddatabase voor demonstratie.
de employees
de tabel slaat niet alleen personeelsgegevens op, maar ook organisatorische gegevens. De kolom ReportsTo
geeft de rapportagerelatie tussen werknemers aan.
als een werknemer rapporteert aan een manager, is de waarde van de kolom ReportsTo
van de rij van de werknemer gelijk aan de waarde van de kolom EmployeeId
van de rij van de manager. Indien een werknemer aan niemand rapporteert, is de kolom ReportsTo
NULL
.
om de informatie te krijgen over wie het directe rapport van wie is, gebruikt u de volgende verklaring:
probeer het
het statement gebruikte de INNER JOIN
clausule om de employees
aan zichzelf toe te voegen. De tabel employees
heeft twee rollen: werknemers en managers.
omdat we de INNER JOIN
clausule hebben gebruikt om de employees
tabel aan zichzelf toe te voegen, heeft de resultaatset niet de rij waarvan de manager kolom een NULL
waarde bevat.
merk op dat de concatenatie-operator ||
meerdere strings samenvoegt tot één string. In het voorbeeld gebruiken we de concatenation operator van de volledige namen van de werknemers door de voornaam, spatie en achternaam samen te voegen.
in het geval u de CEO wilt opvragen die aan niemand rapporteert, moet u de INNER JOIN
clausule wijzigen in LEFT JOIN
clausule in de zoekopdracht hierboven.
Andrew Adams
is de CEO omdat hij niemand rapporteert.
u kunt de self-join-techniek gebruiken om de werknemers in dezelfde stad te vinden als de volgende zoekopdracht:
probeer het
De join-voorwaarde heeft twee expressies:
-
e1.city = e2.city
om ervoor te zorgen dat beide werknemers in dezelfde stad -
e.firstname <> e2.firstname AND e1.lastname <> e2.lastname
om ervoor te zorgen date1
ene2
niet dezelfde werknemer zijn met de aanname dat er zijn geen werknemers die dezelfde voor-en achternaam hebben.
in deze tutorial hebben we u laten zien hoe u de SQLite self-join techniek kunt gebruiken om een tabel aan zichzelf te koppelen.
- Was deze tutorial nuttig ?
- YesNo