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 JOININNER 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
.