Samenvatting: In deze tutorial leert u hoe u SQLite CROSS JOIN
kunt gebruiken om twee of meer resultatensets uit meerdere tabellen te combineren.
Inleiding tot SQLite CROSS JOIN clausule
Als u een LEFT JOIN
INNER JOIN
, of CROSS JOIN
zonder de ON
of USING
clausule, produceert SQLite het Cartesiaanse product van de betrokken tabellen. Het aantal rijen in het cartesiaanse product is het product van het aantal rijen in elke betrokken tabel.
Voorstel, we hebben twee tabellen A en B. De volgende statements voeren de cross join uit en produceren een cartesiaans product van de rijen uit de tabellen A en 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;
Voorstel, de tabel A heeft N rijen en de tabel B heeft M rijen, dan zal de CROSS JOIN
van deze twee tabellen een resultatenset opleveren die NxM
rijen bevat.
Stelt u zich voor dat als u de derde tabel C hebt met K
rijen, het resultaat van de CROSS JOIN
clausule van deze drie tabellen NxMxK
rijen zal bevatten, die zeer enorm kunnen zijn. Daarom moet u heel voorzichtig zijn met het gebruik van de CROSS JOIN
-clausule.
U gebruikt de INNER JOIN
– en LEFT JOIN
-clausules vaker dan de CROSS JOIN
-clausule. Toch zult u de CROSS JOIN
clausule in sommige gevallen zeer nuttig vinden.
Bij voorbeeld, wanneer u een matrix wilt hebben die twee dimensies heeft die volledig gevuld zijn met gegevens zoals leden en data in een lidmaatschapsdatabase. U wilt de aanwezigen van leden controleren op alle relevante data. In dit geval kunt u de CROSS JOIN
-clausule gebruiken zoals in de volgende verklaring:
Code language: SQL (Structured Query Language) (sql)SELECT name, date FROM membersCROSS JOIN dates;
SQLite CROSS JOIN clause example
De volgende statements maken de ranks
en suits
tabellen waarin de rangen en kleuren voor een kaartspel worden opgeslagen en voegen de volledige gegevens in deze twee tabellen in.
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');
Het volgende statement gebruikt de CROSS JOIN
clausule om de gegevens van een compleet kaartspel terug te geven:
Code language: SQL (Structured Query Language) (sql)SELECT rank, suit FROM ranks CROSS JOIN suitsORDER BY suit;
rank | suit |
---|---|
2 | Clubs |
3 | Clubs |
4 | Clubs |
5 | Clubs |
6 | Clubs |
7 | Clubs |
8 | Clubs |
9 | Clubs |
10 | Clubs |
J | Clubs |
Q | Clubs |
K | Clubs |
A | Clubs |
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 | Hartjes |
3 | Hartjes |
4 | Hearts |
5 | Hearts |
6 | Hearts |
7 | Hearts |
8 | Hearts |
9 | Hearts |
10 | Hearts |
J | Hartjes |
Q | Hartjes |
K | Hartjes |
A | Hartjes |
2 | Schoppen |
3 | Schoppen |
4 | Schoppen |
5 | Schoppen |
6 | Schoppen |
7 | Schoppen |
8 | Schoppen |
9 | Schoppen |
10 | Schoppen |
J | Schoppen |
Q | Schoppen |
K | Schoppen |
A | Schoppen |
In deze tutorial, hebt u geleerd hoe u de SQLite CROSS JOIN-clausule kunt gebruiken om een cartesisch product te maken van meerdere tabellen die bij de join betrokken zijn.
- Was deze handleiding nuttig?
- Ja/Nee