Résumé : dans ce tutoriel, vous apprendrez à utiliser SQLite CROSS JOIN
pour combiner deux ou plusieurs ensembles de résultats provenant de plusieurs tables.
Introduction à la clause CROSS JOIN de SQLite
Si vous utilisez une LEFT JOIN
INNER JOIN
, ou CROSS JOIN
sans la clause ON
ou USING
, SQLite produit le produit cartésien des tables concernées. Le nombre de lignes dans le produit cartésien est le produit du nombre de lignes dans chaque table impliquée.
Supposons que nous ayons deux tables A et B. Les instructions suivantes effectuent la jointure croisée et produisent un produit cartésien des lignes des tables A et 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;
Supposons , la table A a N lignes et la table B a M lignes, la CROSS JOIN
de ces deux tables produira un ensemble de résultats qui contient NxM
lignes.
Imaginez que si vous avez la troisième table C avec K
lignes, le résultat de la clause CROSS JOIN
de ces trois tables contiendra NxMxK
lignes, ce qui peut être très énorme. Vous devez donc être très prudent lorsque vous utilisez la clause CROSS JOIN
.
Vous utilisez les clauses INNER JOIN
et LEFT JOIN
plus souvent que la clause CROSS JOIN
. Cependant, vous trouverez la clause CROSS JOIN
très utile dans certains cas.
Par exemple, lorsque vous voulez avoir une matrice qui a deux dimensions remplies de données complètement comme les membres et les données de dates dans une base de données de membres. Vous voulez vérifier les accompagnateurs des membres pour toutes les dates pertinentes. Dans ce cas, vous pouvez utiliser la clause CROSS JOIN
comme l’instruction suivante :
Code language: SQL (Structured Query Language) (sql)SELECT name, date FROM membersCROSS JOIN dates;
Exemple de clause CROSS JOIN SQLite
Les instructions suivantes créent les tables ranks
et suits
qui stockent les rangs et les couleurs pour un jeu de cartes et insèrent les données complètes dans ces deux tables.
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');
L’instruction suivante utilise la clause CROSS JOIN
pour renvoyer les données complètes d’un jeu de cartes :
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 | Diamants | 3 | Diamants | 4 | Diamants | 5 | Diamants |
6 | Diamants | ||||||
7 | Diamants | 8 | Diamants | 9 | Diamants | 10 | Diamants | J | Diamants | Q | Diamants |
K | Diamants | A | Diamants | 2 | Cœurs | 3 | Cœurs | 4 | Cœurs |
5 | Cœurs | 6 | Cœurs | ||||
7 | Cœurs | 8 | Cœurs | 9 | Cœurs | 10 | Cœurs | J | Coeurs | Q | Coeurs | K | Coeurs | A | Coeurs |
2 | Les Piques | ||||||
3 | Les Piques | 4 | Les Piques | 5 | Les Piques | 6 | Les Piques | 7 | Les Piques | 8 | Les Piques | 9 | Les Piques | 10 | Piques |
Piques | Q | Piques | K | Piques | |||
A | Pique |
Dans ce tutoriel, vous avez appris à utiliser la clause CROSS JOIN de SQLite pour produire un produit cartésien de plusieurs tables impliquées dans la jointure.
- Ce tutoriel vous a-t-il été utile ?
- OuiNon
.