Articles

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.lastnamevarmistaakseen, ettäe1jae2eivä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

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *