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.