SQLite Self-Join
Podsumowanie: w tym samouczku dowiesz się o specjalnym typie łączenia o nazwie SQLite self-join, który pozwala na łączenie tabeli do siebie.
pamiętaj, że powinieneś zapoznać się z klauzulamiINNER JOIN
ILEFT JOIN
przed kontynuowaniem tego kursu.
Wprowadzenie do SQLite self-join
self-join jest specjalnym rodzajem złączeń, które pozwalają na dołączenie tabeli do siebie za pomocąLEFT JOIN
lubINNER JOIN
klauzuli. Funkcja self-join umożliwia utworzenie zestawu wyników, który łączy wiersze z innymi wierszami w tej samej tabeli.
ponieważ w zapytaniu nie można odwoływać się do tej samej tabeli więcej niż do jednej, należy użyć aliasu tabeli, aby przypisać jej inną nazwę podczas korzystania z funkcji self-join.
self-join porównuje wartości tych samych lub różnych kolumn w tej samej tabeli. Tylko jeden stół jest zaangażowany w self-join.
często używasz funkcji self-join do odpytywania relacji rodzice / dziecko przechowywanych w tabeli lub do uzyskiwania bieżących wartości.
SQLite self-join przykłady
użyjemyemployees
tabeli w przykładowej bazie danych do demonstracji.
tabelaemployees
przechowuje nie tylko dane pracowników, ale także dane organizacyjne. KolumnaReportsTo
określa relację raportowania między pracownikami.
jeśli pracownik zgłasza się do menedżera, wartośćReportsTo
kolumny wiersza pracownika jest równa wartościEmployeeId
kolumny wiersza menedżera. W przypadku, gdy pracownik nie zgłasza się do nikogo, kolumna ReportsTo
to NULL
.
aby uzyskać informacje o tym, kto jest bezpośrednim raportem, użyj następującego oświadczenia:
Wypróbuj
Instrukcja użyła INNER JOIN
klauzuli, aby dołączyć do employees
do siebie. employees
tabela ma dwie role: pracowników i menedżerów.
ponieważ użyliśmy klauzuliINNER JOIN
, aby dołączyć do tabeliemployees
, zestaw wyników nie ma wiersza, którego kolumna manager zawiera wartośćNULL
.
Należy zauważyć, że operator konkatenacji||
łączy wiele łańcuchów w jeden łańcuch. W przykładzie używamy operatora konkatenacji do od pełnych nazwisk pracowników poprzez połączenie imienia, spacji i nazwiska.
w przypadku, gdy chcesz zapytać prezesa, który nie zgłasza się do nikogo, musisz zmienić klauzulęINNER JOIN
naLEFT JOIN
w powyższym zapytaniu.
Andrew Adams
jest prezesem, ponieważ nikogo nie zgłasza.
możesz użyć techniki samodzielnego łączenia, aby znaleźć pracowników znajdujących się w tym samym mieście, co następujące zapytanie:
Wypróbuj
warunek łączenia ma dwa wyrażenia:
-
e1.city = e2.city
aby upewnić się, że obaj pracownicy znajdują się w tym samym mieście -
e.firstname <> e2.firstname AND e1.lastname <> e2.lastname
aby upewnić się, żee1
Ie2
nie są takie same pracownik z założeniem, że nie ma pracowników, którzy mają to samo imię i nazwisko.
w tym samouczku pokazaliśmy, jak korzystać z techniki SQLite self-join, aby dołączyć tabelę do siebie.
- czy ten tutorial był pomocny ?
- YesNo