SQLite Self-Join
yhteenveto: tässä opetusohjelmassa opit tietyntyyppisestä liittymisestä nimeltä SQLite self-join, jonka avulla voit liittyä pöytään itsekseen.
huomaa, että INNER JOIN
ja LEFT JOIN
lausekkeet kannattaa tuntea ennen kuin jatkaa tämän opetusohjelman kanssa.
Johdatus SQLite self-join
self-join on erityinen liitostyyppi, jonka avulla voi liittyä taulukkoon itselleen käyttäen joko LEFT JOIN
tai INNER JOIN
lauseketta. Käytät self-join-toimintoa luodaksesi tulosjoukon, joka yhdistää rivit muiden saman taulukon rivien kanssa.
koska et voi viitata samaan taulukkoon useampaan kuin yhteen kyselyssä, sinun on käytettävä taulukon peitenimeä, jotta taulukolle voidaan antaa eri nimi, kun käytät self-joiniaia.
itseliimautuva vertaa saman taulukon samojen tai eri sarakkeiden arvoja. Vain yksi pöytä osallistuu itse liittymiseen.
käytät usein self-join-toimintoa kyselläksesi taulukkoon tallennettuja vanhempien ja lasten välisiä suhteita tai saadaksesi juoksevia loppusummia.
SQLite self-join examples
käytämme näytetietokannan taulukkoa employees
demonstrointiin.
employees
taulukko tallentaa työntekijöiden lisäksi myös organisaatiotietoja. ReportsTo
sarake määrittää työntekijöiden välisen raportointisuhteen.
Jos työntekijä raportoi johtajalle, työntekijän rivin ReportsTo
sarakkeen arvo on sama kuin johtajan rivin EmployeeId
sarakkeen arvo. Jos työntekijä ei raportoi kenellekään, ReportsTo
sarake on NULL
.
saadaksesi tiedon siitä, kuka on kenenkin suora raportti, käytät seuraavaa lausetta:
Try It
lausuma käytti INNER JOIN
lauseketta employees
itselleen. employees
taulukossa on kaksi roolia: työntekijät ja johtajat.
koska käytimme INNER JOIN
lauseketta liittääksemme employees
taulun itseensä, tulosjoukossa ei ole riviä, jonka isännöitsijäsarakkeessa on NULL
arvo.
huomaa, että konsatenaatio-operaattori ||
konsatenoi useita merkkijonoja yhdeksi merkkijonoksi. Esimerkissä, käytämme concatenation operaattori alkaen koko nimet työntekijöiden yhdistämällä etunimi, tila, ja sukunimi.
Jos haluat tiedustella toimitusjohtajalta, joka ei raportoi kenellekään, sinun on muutettava yllä olevassa kyselyssä oleva INNER JOIN
lauseke LEFT JOIN
lauseke.
Andrew Adams
on toimitusjohtaja, koska ei ilmoita ketään.
voit itse liittyä-tekniikalla löytää työntekijät samasta kaupungista kuin seuraava kysely:
kokeile
liittymisehdossa on kaksi lauseketta:
-
e1.city = e2.city
varmistaakseen, että molemmat samassa kaupungissa sijaitsevat työntekijät
e.firstname <> e2.firstname AND e1.lastname <> e2.lastname
varmistaakseen, ettäe1
jae2
eivät ole samoja työntekijä olettaen, että ei ole työntekijöitä, joilla on sama etu-ja sukunimi.
tässä opetusohjelmassa olemme näyttäneet, miten SQLite self-join-tekniikkaa käytetään pöydän liittämiseen itseensä.
- Auttoiko tämä opetusohjelma?
- YesNo