SQLite Self-Join
sammanfattning: i denna handledning kommer du att lära dig om en speciell typ av koppling som heter SQLite self-join som låter dig gå med i tabellen till sig själv.
Observera att du bör vara bekant med INNER JOIN
och LEFT JOIN
klausuler innan du går vidare med denna handledning.
introduktion till SQLite self-join
self-join är en speciell typ av kopplingar som låter dig gå med i en tabell med antingen LEFT JOIN
eller INNER JOIN
klausul. Du använder self-join för att skapa en resultatuppsättning som förenar raderna med de andra raderna i samma tabell.
eftersom du inte kan hänvisa till samma tabell mer än en i en fråga måste du använda ett tabellalias för att tilldela tabellen ett annat namn när du använder självkoppling.
självkopplingen jämför värden för samma eller olika kolumner i samma tabell. Endast ett bord är involverat i självkopplingen.
du använder ofta självkoppling för att fråga föräldrar / barnförhållande som lagras i en tabell eller för att få löpande summor.
SQLite self-join exempel
Vi kommer att använda employees
tabellen i provdatabasen för demonstration.
employees
tabellen lagrar inte bara anställdas data utan även organisationsdata. KolumnenReportsTo
anger rapporteringsförhållandet mellan anställda.
om en anställd rapporterar till en chef är värdet på ReportsTo
kolumnen i arbetstagarens rad lika med värdet på EmployeeId
kolumnen i chefsraden. Om en anställd inte rapporterar till någon är kolumnen ReportsTo
NULL
.
för att få information om vem som är den direkta rapporten om vem använder du följande uttalande:
prova det
uttalandet använde INNER JOIN
klausul för att gå med i employees
till sig själv. Tabellen employees
har två roller: anställda och chefer.
eftersom vi använde INNER JOIN
– klausulen för att gå med iemployees
– tabellen till sig själv, har resultatuppsättningen inte raden vars hanterarkolumn innehåller ett NULL
– värde.
Observera att sammankopplingsoperatören ||
sammanfogar flera strängar till en enda sträng. I exemplet använder vi sammanlänkningsoperatören till från de anställdas fullständiga namn genom att sammanfoga förnamn, mellanslag och efternamn.
om du vill fråga VD som inte rapporterar till någon måste du ändraINNER JOIN
klausul tillLEFT JOIN
klausul i frågan ovan.
Andrew Adams
är VD eftersom han inte rapporterar någon.
Du kan använda självkopplingstekniken för att hitta de anställda i samma stad som följande fråga:
prova det
join-villkoret har två uttryck:
-
e1.city = e2.city
för att se till att båda anställda i samma stad -
e.firstname <> e2.firstname AND e1.lastname <> e2.lastname
för att säkerställa atte1
oche2
inte är samma anställd med antagandet att det inte finns anställda som har samma förnamn och efternamn.
i den här handledningen har vi visat dig hur du använder SQLite self-join-tekniken för att gå med i ett bord till sig själv.
- var denna handledning till hjälp ?
- YesNo