Riepilogo :in questo tutorial imparerai come usare SQLite CROSS JOIN
per combinare due o più set di risultati da più tabelle.
Introduzione a SQLite CROSS JOIN
clausola
Se utilizzi un LEFT JOIN
, INNER JOIN
o CROSS JOIN
senza il ON
o USING
clausola, SQLite produce il prodotto cartesiano delle tabelle coinvolte. Il numero di righe nel prodotto cartesiano è il prodotto del numero di righe in ciascuna tabella coinvolta.
Supponiamo di avere due tabelle A e B. Le seguenti istruzioni eseguono il cross join e producono un prodotto cartesiano delle righe delle tabelle A e 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)
Supponiamo che la tabella A abbia N righe e la tabella B abbia M righe, il CROSS JOIN
di queste due tabelle produrrà un set di risultati che contiene NxM
righe.
Immagina di avere la terza tabella C con K
righe, il risultato del CROSS JOIN
clausola di queste tre tabelle conterrà NxMxK
righe, che possono essere molto grandi. Pertanto, dovresti stare molto attento quando usi il CROSS JOIN
clausola.
Usi il INNER JOIN
e LEFT JOIN
clausole più spesso di CROSS JOIN
clausola. Tuttavia, troverai il CROSS JOIN
clausola molto utile in alcuni casi.
Ad esempio, quando si desidera avere una matrice con due dimensioni riempite con dati completamente simili ai membri e ai dati delle date in un database di appartenenza. Vuoi controllare gli assistenti dei membri per tutte le date rilevanti. In questo caso, puoi utilizzare il CROSS JOIN
clausola come la seguente affermazione:
SELECT name,
date
FROM members
CROSS JOIN dates;
Code language: SQL (Structured Query Language) (sql)
SQLite CROSS JOIN
esempio di clausola
Le seguenti istruzioni creano i ranks
e suits
tabelle che memorizzano i gradi e i semi di un mazzo di carte e inseriscono i dati completi in queste due tabelle.
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)
La seguente istruzione usa il CROSS JOIN
clausola per restituire un mazzo di carte completo:
SELECT rank,
suit
FROM ranks
CROSS JOIN
suits
ORDER BY suit;
Code language: SQL (Structured Query Language) (sql)
rank | seme |
---|---|
2 | Club |
3 | Club |
4 | Club |
5 | Club |
6 | Club |
7 | Club |
8 | Club |
9 | Club |
10 | Club |
J | Club |
D | Club |
K | Club |
A | Club |
2 | Diamanti |
3 | Diamanti |
4 | Diamanti |
5 | Diamanti |
6 | Diamanti |
7 | Diamanti |
8 | Diamanti |
9 | Diamanti |
10 | Diamanti |
J | Diamanti |
D | Diamanti |
K | Diamanti |
A | Diamanti |
2 | Cuori |
3 | Cuori |
4 | Cuori |
5 | Cuori |
6 | Cuori |
7 | Cuori |
8 | Cuori |
9 | Cuori |
10 | Cuori |
J | Cuori |
D | Cuori |
K | Cuori |
A | Cuori |
2 | Picche |
3 | Picche |
4 | Picche |
5 | Picche |
6 | Picche |
7 | Picche |
8 | Picche |
9 | Picche |
10 | Picche |
J | Picche |
D | Picche |
K | Picche |
A | Picche |
In questo tutorial, hai imparato come utilizzare la clausola SQLite CROSS JOIN per produrre un prodotto cartesiano di più tabelle coinvolte nel join.