Zusammenfassung: In diesem Tutorial lernen Sie, wie Sie mit SQLite CROSS JOIN
zwei oder mehr Ergebnismengen aus mehreren Tabellen kombinieren können.
Einführung in die SQLite CROSS JOIN Klausel
Wenn Sie ein LEFT JOIN
INNER JOIN
, oder CROSS JOIN
ohne die 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 den beiden beteiligten Tabellen.
Angenommen, wir haben zwei Tabellen A und B. Die folgenden Anweisungen führen den Cross Join durch und erzeugen ein kartesisches Produkt der Zeilen aus den Tabellen A und B.
Code language: SQL (Structured Query Language) (sql)SELECT *FROM A JOIN B;
Code language: SQL (Structured Query Language) (sql)SELECT *FROM AINNER JOIN B;
Code language: SQL (Structured Query Language) (sql)SELECT *FROM ACROSS JOIN B;
Code language: SQL (Structured Query Language) (sql)SELECT * FROM A, B;
Angenommen, die Tabelle A hat N Zeilen und die Tabelle B hat M Zeilen, dann wird die CROSS JOIN
dieser beiden Tabellen eine Ergebnismenge erzeugen, die NxM
Zeilen enthält.
Stellen Sie sich vor, dass, wenn Sie die dritte Tabelle C mit K
Zeilen haben, das Ergebnis der CROSS JOIN
-Klausel dieser drei Tabellen NxMxK
Zeilen enthalten wird, was sehr groß sein kann. Daher sollten Sie bei der Verwendung der CROSS JOIN
-Klausel sehr vorsichtig sein.
Die INNER JOIN
– und LEFT JOIN
-Klauseln werden häufiger verwendet als die CROSS JOIN
-Klausel. Allerdings werden Sie die CROSS JOIN
-Klausel in einigen Fällen sehr nützlich finden.
Zum Beispiel, wenn Sie eine Matrix haben wollen, die zwei Dimensionen hat, die komplett mit Daten gefüllt sind, wie Mitglieder und Daten in einer Mitgliederdatenbank. Sie wollen die Teilnehmer von Mitgliedern auf alle relevanten Termine prüfen. In diesem Fall können Sie die CROSS JOIN
-Klausel wie die folgende Anweisung verwenden:
Code language: SQL (Structured Query Language) (sql)SELECT name, date FROM membersCROSS JOIN dates;
SQLite CROSS JOIN-Klausel Beispiel
Die folgenden Anweisungen erstellen die Tabellen ranks
und suits
, die die Ränge und Farben für ein Kartenspiel speichern, und fügen die kompletten Daten in diese beiden Tabellen ein.
Code language: SQL (Structured Query Language) (sql)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');
Die folgende Anweisung verwendet die CROSS JOIN
-Klausel, um die Daten eines vollständigen Kartenspiels zurückzugeben:
Code language: SQL (Structured Query Language) (sql)SELECT rank, suit FROM ranks CROSS JOIN suitsORDER BY suit;
Rang | Anzug |
---|---|
2 | Clubs |
3 | Clubs |
4 | Klubs | 5 | Klubs | 6 | Klubs | 7 | Klubs |
8 | Clubs |
9 | Clubs |
10 | Clubs |
J | Clubs |
Q | Klubs |
K | Klubs |
A | Klubs |
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 | Herz |
5 | Herz |
6 | Herz |
7 | Herz |
8 | Herz |
9 | Herz |
10 | Herz |
J | Herz |
Q | Herz |
K | Herz |
A | Herz |
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-Klausel CROSS JOIN verwenden, um ein kartesisches Produkt aus mehreren am Join beteiligten Tabellen zu erzeugen.
- War dieses Tutorial hilfreich?
- JaNein