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 ate1
oge2
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