SQLite Self-Join
rezumat: în acest tutorial, veți afla despre un tip special de join numit SQLite self-join, care vă permite să se alăture de masă pentru a se.
rețineți că ar trebui să fie familiarizați cu INNER JOIN
și LEFT JOIN
clauze înainte de a merge mai departe cu acest tutorial.
Introducere în SQLite auto-join
auto-join este un tip special de se alătură care vă permit să se alăture un tabel pentru a se folosind fieLEFT JOIN
sauINNER JOIN
clauza. Utilizați self-join pentru a crea un set de rezultate care unește rândurile cu celelalte rânduri din același tabel.
deoarece nu puteți face referire la același tabel mai mult de unul dintr-o interogare, trebuie să utilizați un alias de tabel pentru a atribui tabelului un nume diferit atunci când utilizați auto-asociere.
self-join compară valorile coloanelor identice sau diferite din același tabel. Doar un singur tabel este implicat în auto-Alăturați-vă.
utilizați de multe ori self-join pentru a interoga relația părinți / copil stocate într-un tabel sau pentru a obține totaluri de funcționare.
SQLite self-join Exemple
vom folosiemployees
tabelul din Baza de date eșantion pentru demonstrație.
tabelulemployees
stochează nu numai datele angajaților, ci și datele organizaționale. ColoanaReportsTo
specifică relația de raportare dintre angajați.
dacă un angajat raportează unui manager, valoarea coloaneiReportsTo
a rândului angajatului este egală cu valoarea coloaneiEmployeeId
a rândului managerului. În cazul în care un angajat nu raportează nimănui, coloana ReportsTo
este NULL
.
pentru a obține informații despre cine este raportul direct al cui, utilizați următoarea declarație:
încercați
instrucțiunea a folosit clauza INNER JOIN
pentru a se alătura clauzei employees
pentru sine. Tabelulemployees
are două roluri: angajați și manageri.
deoarece am folosit clauzaINNER JOIN
pentru a uni tabelulemployees
la sine, setul de rezultate nu are rândul a cărui coloană manager conține o valoareNULL
.
rețineți că operatorul de concatenare||
concatenează mai multe șiruri într-un singur șir. În exemplu, folosim operatorul de concatenare pentru a de la numele complet al angajaților prin concatenarea prenumelui, spațiului și prenumelui.
în cazul în care doriți să interogați CEO-ul care nu raportează nimănui, trebuie să schimbați clauza INNER JOIN
în clauza LEFT JOIN
din interogarea de mai sus.
Andrew Adams
este CEO pentru că nu raportează pe nimeni.
puteți utiliza tehnica self-join pentru a găsi angajații aflați în același oraș cu următoarea interogare:
încercați
condiția join are două expresii:
-
e1.city = e2.city
pentru a vă asigura că ambii angajați aflați în același oraș -
e.firstname <> e2.firstname AND e1.lastname <> e2.lastname
pentru a vă asigura căe1
șie2
nu sunt la fel angajat cu presupunerea că nu există angajați care au același nume și prenume.
în acest tutorial, v-am arătat cum să utilizați tehnica SQLite self-join pentru a vă alătura unui tabel.
- a fost util acest tutorial ?
- YesNo