Articles

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 ReportsToNULL.

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 att e1 och e2 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

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *