SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Dołączanie do SQLite

Podsumowanie :w tym samouczku dowiesz się o specjalnym typie złączenia zwanym SQLite self-join, który pozwala na łączenie tabeli ze sobą.

Pamiętaj, że powinieneś znać INNER JOIN i LEFT JOIN klauzule przed kontynuowaniem tego samouczka.

Wprowadzenie do samodzielnego łączenia SQLite

Self-join jest specjalnym rodzajem złączeń, które pozwalają na dołączenie tabeli do niej samej za pomocą LEFT JOIN lub INNER JOIN klauzula. Korzystasz z funkcji samodzielnego łączenia, aby utworzyć zestaw wyników, który łączy wiersze z innymi wierszami w tej samej tabeli.

Ponieważ nie możesz odwoływać się do tej samej tabeli więcej niż jednej w zapytaniu, musisz użyć aliasu tabeli, aby przypisać tabeli inną nazwę podczas korzystania z funkcji samodzielnego łączenia.

Sprzężenie samodzielne porównuje wartości tych samych lub różnych kolumn w tej samej tabeli. Tylko jeden stół jest zaangażowany w samodzielne łączenie.

Często używasz samołączenia do zapytania o relacje rodzice/dziecko przechowywane w tabeli lub w celu uzyskania bieżących sum.

Przykłady samodzielnego łączenia SQLite

Będziemy korzystać z employees tabeli w przykładowej bazie danych do demonstracji.

employees tabela przechowuje nie tylko dane pracowników, ale także dane organizacyjne. ReportsTo kolumna określa relacje sprawozdawcze między pracownikami.

Jeśli pracownik podlega kierownikowi, wartość ReportsTo kolumna wiersza pracownika jest równa wartości EmployeeId kolumna wiersza menedżera. W przypadku, gdy pracownik nie zgłasza się do nikogo, ReportsTo kolumna ma wartość NULL .

Aby uzyskać informacje o tym, kto jest bezpośrednim podwładnym, użyj następującego oświadczenia:

SELECT m.firstname || ' ' || m.lastname AS 'Manager',
       e.firstname || ' ' || e.lastname AS 'Direct report' 
FROM employees e
INNER JOIN employees m ON m.employeeid = e.reportsto
ORDER BY manager;Code language: SQL (Structured Query Language) (sql)

Wypróbuj

W instrukcji użyto INNER JOIN klauzula dołączenia do employees Do siebie. employees stół pełni dwie role:pracowników i menedżerów.

Ponieważ użyliśmy INNER JOIN klauzula dołączenia do employees tabeli do siebie, zestaw wyników nie zawiera wiersza, którego kolumna menedżera zawiera NULL wartość.

Zauważ, że operator konkatenacji || łączy wiele ciągów w jeden ciąg. W tym przykładzie używamy operatora konkatenacji do od pełnych nazwisk pracowników, łącząc imię, spację i nazwisko.

Jeśli chcesz zapytać CEO, który nikomu nie podlega, musisz zmienić INNER JOIN klauzula LEFT JOIN klauzula w powyższym zapytaniu.

Andrew Adams jest dyrektorem generalnym, 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:

SELECT DISTINCT
	e1.city,
	e1.firstName || ' ' || e1.lastname AS fullname
FROM
	employees e1
INNER JOIN employees e2 ON e2.city = e1.city 
   AND (e1.firstname <> e2.firstname AND e1.lastname <> e2.lastname)
ORDER BY
	e1.city;Code language: SQL (Structured Query Language) (sql)

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ę, że e1 i e2 nie są tym samym pracownikiem z założeniem, że nie ma pracowników o tym samym imieniu i nazwisku.

W tym samouczku pokazaliśmy, jak korzystać z techniki łączenia się w SQLite, aby dołączyć tabelę do siebie.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLite - Utwórz kopię zapasową bazy danych do pliku

  2. Jak Coalesce() działa w SQLite

  3. Jak usunąć klucz obcy w SQLite?

  4. Czy identyfikator zasobu zmienia się przy każdym uruchomieniu aplikacji?

  5. UnsatisfiedLinkError w metodzie natywnej