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.