SQLite
 sql >> Datenbank >  >> RDS >> SQLite

SQLite CROSS JOIN mit einem praktischen Beispiel

Zusammenfassung :In diesem Tutorial lernen Sie, wie Sie SQLite CROSS JOIN verwenden um zwei oder mehr Ergebnismengen aus mehreren Tabellen zu kombinieren.

Einführung in SQLite CROSS JOIN Klausel

Wenn Sie einen LEFT JOIN verwenden , INNER JOIN , oder CROSS JOIN ohne ON oder USING -Klausel erzeugt SQLite das kartesische Produkt der beteiligten Tabellen. Die Anzahl der Zeilen im kartesischen Produkt ist das Produkt der Anzahl der Zeilen in jeder beteiligten Tabelle.

Angenommen, wir haben zwei Tabellen A und B. Die folgenden Anweisungen führen den Cross Join aus und erzeugen ein kartesisches Produkt der Zeilen aus den Tabellen A und 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)

Angenommen, die A-Tabelle hat N Zeilen und die B-Tabelle hat M Zeilen, der CROSS JOIN dieser beiden Tabellen wird eine Ergebnismenge erzeugen, die NxM enthält Zeilen.

Stellen Sie sich vor, Sie hätten die dritte Tabelle C mit K Zeilen, das Ergebnis des CROSS JOIN Klausel dieser drei Tabellen enthält NxMxK Zeilen, die sehr groß sein können. Daher sollten Sie bei der Verwendung des CROSS JOIN sehr vorsichtig sein Klausel.

Sie verwenden den INNER JOIN und LEFT JOIN -Klauseln häufiger als der CROSS JOIN Klausel. Sie werden jedoch den CROSS JOIN finden Klausel in manchen Fällen sehr nützlich.

Zum Beispiel, wenn Sie eine Matrix haben möchten, die zwei Dimensionen hat, die mit Daten gefüllt sind, die vollständig wie Mitglieder- und Datumsdaten in einer Mitgliedschaftsdatenbank sind. Sie möchten die Anwesenheitsliste der Mitglieder für alle relevanten Termine prüfen. In diesem Fall können Sie den CROSS JOIN verwenden -Klausel wie die folgende Anweisung:

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

SQLite CROSS JOIN Klauselbeispiel

Die folgenden Anweisungen erstellen die ranks und suits Tabellen, die die Ränge und Farben für ein Kartenspiel speichern und die vollständigen Daten in diese beiden Tabellen einfügen.

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)

Die folgende Anweisung verwendet den CROSS JOIN -Klausel zur Rückgabe eines vollständigen Kartenspiels:

SELECT rank,
       suit
  FROM ranks
       CROSS JOIN
       suits
ORDER BY suit;Code language: SQL (Structured Query Language) (sql)
Rang Anzug
2 Vereine
3 Vereine
4 Vereine
5 Vereine
6 Vereine
7 Vereine
8 Vereine
9 Vereine
10 Vereine
J Vereine
Q Vereine
K Vereine
A Vereine
2 Diamanten
3 Diamanten
4 Diamanten
5 Diamanten
6 Diamanten
7 Diamanten
8 Diamanten
9 Diamanten
10 Diamanten
J Diamanten
Q Diamanten
K Diamanten
A Diamanten
2 Herzen
3 Herzen
4 Herzen
5 Herzen
6 Herzen
7 Herzen
8 Herzen
9 Herzen
10 Herzen
J Herzen
Q Herzen
K Herzen
A Herzen
2 Pik
3 Pik
4 Pik
5 Pik
6 Pik
7 Pik
8 Pik
9 Pik
10 Pik
J Pik
Q Pik
K Pik
A Pik

In diesem Lernprogramm haben Sie gelernt, wie Sie die SQLite CROSS JOIN-Klausel verwenden, um ein kartesisches Produkt mehrerer an der Verknüpfung beteiligter Tabellen zu erzeugen.