SQLite
 sql >> Base de données >  >> RDS >> SQLite

SQLite CROSS JOIN avec un exemple pratique

Résumé :dans ce tutoriel, vous apprendrez à utiliser SQLite CROSS JOIN pour combiner deux ensembles de résultats ou plus à partir de plusieurs tables.

Introduction à SQLite CROSS JOIN clause

Si vous utilisez un LEFT JOIN , INNER JOIN , ou CROSS JOIN sans le ON ou USING clause, SQLite produit le produit cartésien des tables impliqué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.

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)

Supposons que la table A ait N lignes et que la table B ait M lignes, le CROSS JOIN de ces deux tables produira un jeu de résultats contenant NxM lignes.

Imaginez que si vous avez la troisième table C avec K lignes, le résultat du CROSS JOIN clause de ces trois tables contiendra NxMxK rangées, qui peuvent être très grandes. Par conséquent, vous devez être très prudent lorsque vous utilisez le CROSS JOIN clause.

Vous utilisez le INNER JOIN et LEFT JOIN clauses plus souvent que le CROSS JOIN clause. Cependant, vous trouverez le CROSS JOIN clause 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 d'adhésion. Vous souhaitez vérifier les préposés des membres pour toutes les dates pertinentes. Dans ce cas, vous pouvez utiliser le CROSS JOIN clause sous la forme de l'instruction suivante :

SELECT name,
       date 
FROM members
CROSS JOIN dates;Code language: SQL (Structured Query Language) (sql)

SQLite CROSS JOIN exemple de clause

Les instructions suivantes créent les ranks et suits tables qui stockent les rangs et les couleurs d'un jeu de cartes et insèrent les données complètes dans ces deux tables.

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)

L'instruction suivante utilise le CROSS JOIN clause pour renvoyer un jeu complet de données de cartes :

SELECT rank,
       suit
  FROM ranks
       CROSS JOIN
       suits
ORDER BY suit;Code language: SQL (Structured Query Language) (sql)
classement costume
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 Coeurs
3 Coeurs
4 Coeurs
5 Coeurs
6 Coeurs
7 Coeurs
8 Coeurs
9 Coeurs
10 Coeurs
J Coeurs
Q Coeurs
K Coeurs
A Coeurs
2 Pique
3 Pique
4 Pique
5 Pique
6 Pique
7 Pique
8 Pique
9 Pique
10 Pique
J Pique
Q Pique
K Pique
A Pique

Dans ce didacticiel, vous avez appris à utiliser la clause SQLite CROSS JOIN pour produire un produit cartésien de plusieurs tables impliquées dans la jointure.