Samenvatting :in deze tutorial leer je hoe je SQLite CROSS JOIN
gebruikt om twee of meer resultatensets uit meerdere tabellen te combineren.
Inleiding tot SQLite CROSS JOIN
clausule
Als u een LEFT JOIN
. gebruikt , INNER JOIN
, of CROSS JOIN
zonder de ON
of USING
clausule, SQLite produceert 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.
Stel dat we twee tabellen A en B hebben. De volgende uitspraken voeren de cross join uit en produceren een cartesiaans product van de rijen uit de A- en B-tabellen.
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)
Stel dat de A-tabel N rijen heeft en de B-tabel M rijen, de CROSS JOIN
van deze twee tabellen zal een resultatenset opleveren die NxM
. bevat rijen.
Stel je voor dat als je de derde tabel C hebt met K
rijen, het resultaat van de CROSS JOIN
clausule van deze drie tabellen bevat NxMxK
rijen, die erg groot kunnen zijn. Daarom moet u zeer voorzichtig zijn bij het gebruik van de CROSS JOIN
clausule.
Je gebruikt de INNER JOIN
en LEFT JOIN
clausules vaker dan de CROSS JOIN
clausule. U vindt echter de CROSS JOIN
clausule in sommige gevallen erg handig.
Als u bijvoorbeeld een matrix wilt hebben die twee dimensies heeft, gevuld met gegevens die volledig lijken op leden- en datumgegevens in een lidmaatschapsdatabase. U wilt de aanwezigen van leden controleren op alle relevante data. In dit geval kunt u de CROSS JOIN
. gebruiken clausule als de volgende verklaring:
SELECT name,
date
FROM members
CROSS JOIN dates;
Code language: SQL (Structured Query Language) (sql)
SQLite CROSS JOIN
clausule voorbeeld
De volgende instructies creëren de ranks
en suits
tabellen die de rangen en kleuren voor een pak kaarten opslaan en de volledige gegevens in deze twee tabellen invoegen.
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)
De volgende instructie gebruikt de CROSS JOIN
clausule om een volledig kaartspel te retourneren:
SELECT rank,
suit
FROM ranks
CROSS JOIN
suits
ORDER BY suit;
Code language: SQL (Structured Query Language) (sql)
rang | pak |
---|---|
2 | Clubs |
3 | Clubs |
4 | Clubs |
5 | Clubs |
6 | Clubs |
7 | Clubs |
8 | Clubs |
9 | Clubs |
10 | Clubs |
J | Clubs |
Q | Clubs |
K | Clubs |
Een | 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 |
Een | Diamanten |
2 | Hartjes |
3 | Hartjes |
4 | Hartjes |
5 | Hartjes |
6 | Hartjes |
7 | Hartjes |
8 | Hartjes |
9 | Hartjes |
10 | Hartjes |
J | Hartjes |
Q | Hartjes |
K | Hartjes |
Een | 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 |
Een | Schoppen |
In deze zelfstudie hebt u geleerd hoe u de SQLite CROSS JOIN-clausule gebruikt om een Cartesiaans product te maken van meerdere tabellen die bij de join betrokken zijn.