Articles

SQLite Self-Join

Sammendrag: I denne opplæringen, vil du lære om en spesiell type delta kalt SQLite self-join som lar deg bli med tabellen til seg selv.

Merk at du bør være kjent medINNER JOIN ogLEFT JOIN klausuler før du går videre med denne opplæringen.

Introduksjon Til SQLite self-join

self-join er en spesiell type sammenføyninger som lar deg bli med i et bord til seg selv ved hjelp av enten LEFT JOIN eller INNER JOIN klausul. Du bruker selvkobling til å opprette et resultatsett som knytter sammen radene med de andre radene i samme tabell.

fordi du ikke kan referere til den samme tabellen mer enn en i en spørring, må du bruke et tabellalias til å tilordne tabellen et annet navn når du bruker selvsammendrag.

selvkoblingen sammenligner verdier for de samme eller forskjellige kolonnene i samme tabell. Bare ett bord er involvert i selvtillit.

du bruker ofte self-join til å spørre foreldre / barn-forhold som er lagret i en tabell eller for å få løpende totaler.

sqlite self-join eksempler

Vi vil brukeemployees tabellen i eksempeldatabasen for demonstrasjon.

employees tabellen lagrer ikke bare ansattes data, men også organisasjonsdata. KolonnenReportsTo angir rapporteringsforholdet mellom ansatte.

hvis en ansatt rapporterer til en leder, er verdien avReportsTo kolonnen i den ansattes rad lik verdien av EmployeeId kolonnen i lederens rad. Hvis en ansatt ikke rapporterer til noen, er ReportsTo kolonnen NULL.

for å få informasjon om hvem som er direkte rapport av hvem, bruker du følgende uttalelse:

Prøv Det

setningen brukte INNER JOIN klausulen for å bli med i employees til seg selv. employees tabellen har to roller: ansatte og ledere.

fordi vi brukteINNER JOIN – klausulen for å bli med iemployees – tabellen til seg selv, har resultatsettet ikke raden med lederkolonnen som inneholder enNULL – verdi.

Merk at sammenkoblingsoperatoren || sammenkobler flere strenger i en enkelt streng. I eksemplet bruker vi sammenkoblingsoperatoren til fra de fulle navnene til de ansatte ved å sammenkoble fornavn, mellomrom og etternavn.

hvis DU vil spørre KONSERNSJEFEN som ikke rapporterer til noen, må du endre INNER JOIN – klausulen til LEFT JOIN – klausulen i spørringen ovenfor.

Andrew Adams er ADMINISTRERENDE DIREKTØR fordi han ikke rapporterer noen.

du kan bruke self-join teknikk for å finne de ansatte som ligger i samme by som følgende spørring:

Prøv det

sammenføyningsbetingelsen har to uttrykk:

  • e1.city = e2.city for å sikre at begge ansatte ligger i samme by
  • e.firstname <> e2.firstname AND e1.lastname <> e2.lastname for å sikre at e1 og e2 ikke er samme ansatt med antagelsen om at det ikke er ansatte som har samme fornavn og etternavn.

i denne opplæringen har vi vist deg hvordan Du bruker sqlite self-join-teknikken til å bli med i et bord til seg selv.

  • Var denne opplæringen nyttig ?
  • YesNo

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *