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

SQLite CROSS JOIN z praktycznym przykładem

Podsumowanie :w tym samouczku dowiesz się, jak używać SQLite CROSS JOIN aby połączyć dwa lub więcej zestawów wyników z wielu tabel.

Wprowadzenie do SQLite CROSS JOIN klauzula

Jeśli używasz LEFT JOIN , INNER JOIN lub CROSS JOIN bez ON lub USING klauzula SQLite tworzy iloczyn kartezjański zaangażowanych tabel. Liczba wierszy w iloczynie kartezjańskim jest iloczynem liczby wierszy w każdej z zaangażowanych tabel.

Załóżmy, że mamy dwie tabele A i B. Poniższe instrukcje wykonują sprzężenie krzyżowe i tworzą iloczyn kartezjański wierszy z tabel A i B.

SELECT *
FROM A JOIN B;Code language: SQL (Structured Query Language) (sql)
SELECT *
FROM A
INNER JOIN B;Code language: SQL (Structured Query Language) (sql)
SELECT *
FROM A
CROSS JOIN B;Code language: SQL (Structured Query Language) (sql)
SELECT * 
FROM A, B;Code language: SQL (Structured Query Language) (sql)

Załóżmy, że tabela A ma N wierszy, a tabela B ma M wierszy, CROSS JOIN z tych dwóch tabel wygeneruje zestaw wyników zawierający NxM wiersze.

Wyobraź sobie, że masz trzecią tabelę C z K wierszy, wynik CROSS JOIN klauzula tych trzech tabel będzie zawierać NxMxK rzędy, które mogą być bardzo duże. Dlatego powinieneś być bardzo ostrożny używając CROSS JOIN klauzula.

Używasz INNER JOIN i LEFT JOIN klauzul częściej niż CROSS JOIN klauzula. Jednak znajdziesz CROSS JOIN klauzula bardzo przydatna w niektórych przypadkach.

Na przykład, gdy chcesz mieć macierz, która ma dwa wymiary wypełnione danymi całkowicie takimi jak dane członków i daty w bazie danych członkostwa. Chcesz sprawdzić obecność członków dla wszystkich odpowiednich dat. W takim przypadku możesz użyć CROSS JOIN klauzulę jako następujące oświadczenie:

SELECT name,
       date 
FROM members
CROSS JOIN dates;Code language: SQL (Structured Query Language) (sql)

SQLite CROSS JOIN przykład klauzuli

Poniższe instrukcje tworzą ranks i suits tabele, które przechowują rangi i kolory dla talii kart i wstawiają pełne dane do tych dwóch tabel.

CREATE TABLE ranks (
    rank TEXT NOT NULL
);

CREATE TABLE suits (
    suit TEXT NOT NULL
);

INSERT INTO ranks(rank) 
VALUES('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9'),('10'),('J'),('Q'),('K'),('A');

INSERT INTO suits(suit) 
VALUES('Clubs'),('Diamonds'),('Hearts'),('Spades');Code language: SQL (Structured Query Language) (sql)

Poniższa instrukcja używa CROSS JOIN klauzula o zwróceniu kompletnej talii danych:

SELECT rank,
       suit
  FROM ranks
       CROSS JOIN
       suits
ORDER BY suit;Code language: SQL (Structured Query Language) (sql)
ranga garnitur
2 Kluby
3 Kluby
4 Kluby
5 Kluby
6 Kluby
7 Kluby
8 Kluby
9 Kluby
10 Kluby
J Kluby
Pytanie Kluby
K Kluby
A Kluby
2 Diamenty
3 Diamenty
4 Diamenty
5 Diamenty
6 Diamenty
7 Diamenty
8 Diamenty
9 Diamenty
10 Diamenty
J Diamenty
Pytanie Diamenty
K Diamenty
A Diamenty
2 Serca
3 Serca
4 Serca
5 Serca
6 Serca
7 Serca
8 Serca
9 Serca
10 Serca
J Serca
Pytanie Serca
K Serca
A Serca
2 Pik
3 Pik
4 Pik
5 Pik
6 Pik
7 Pik
8 Pik
9 Pik
10 Pik
J Pik
Pytanie Pik
K Pik
A Pik

W tym samouczku nauczyłeś się, jak używać klauzuli SQLite CROSS JOIN do tworzenia kartezjańskiego produktu wielu tabel uczestniczących w łączeniu.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gdzie Android przechowuje wersję bazy danych SQLite?

  2. ustaw poprawnie sqlite db w Androidzie

  3. Wstaw znacznik czasu do bazy danych za pomocą ContentValues

  4. android.database.sqlite.SQLiteException:blisko s:błąd składni (kod 1):,

  5. Aplikacja ulega awarii podczas instalacji z błędem sqlite3_exec — Nie można ustawić trybu synchronicznego =1 (normalny)