Résumé :dans ce didacticiel, vous apprendrez à émuler la jointure externe complète SQLite à l'aide de l'UNION
et LEFT JOIN
clauses.
Introduction à SQL FULL OUTER JOIN
clause
En théorie, le résultat de la FULL OUTER JOIN
est une combinaison d'un LEFT JOIN
et un RIGHT JOIN
. Le jeu de résultats de la jointure externe complète a NULL
valeurs pour chaque colonne de la table qui n'a pas de ligne correspondante dans l'autre table. Pour les lignes correspondantes, le FULL OUTER JOIN
produit une seule ligne avec les valeurs des colonnes des lignes des deux tables.
L'image suivante illustre le résultat de la FULL OUTER JOIN
clause :
Voir les cats
suivants et dogs
tableaux.
-- create and insert data into the dogs table
CREATE TABLE dogs (
type TEXT,
color TEXT
);
INSERT INTO dogs(type, color)
VALUES('Hunting','Black'), ('Guard','Brown');
-- create and insert data into the cats table
CREATE TABLE cats (
type TEXT,
color TEXT
);
INSERT INTO cats(type,color)
VALUES('Indoor','White'),
('Outdoor','Black');
Code language: SQL (Structured Query Language) (sql)
L'instruction suivante utilise le FULL OUTER JOIN
clause pour interroger les données des dogs
et cats
tableaux.
SELECT *
FROM dogs
FULL OUTER JOIN cats
ON dogs.color = cats.color;
Code language: SQL (Structured Query Language) (sql)
Voici le résultat de l'instruction ci-dessus :
Type | Couleur | Tapez | Couleur |
---|---|---|---|
Chasse | Noir | Extérieur | Noir |
Garde | Marron | NULL | NULL |
NULL | NULL | Intérieur | Blanc |
Malheureusement, SQLite ne prend pas en charge le RIGHT JOIN
clause et aussi la FULL OUTER JOIN
clause. Cependant, vous pouvez facilement émuler le FULL OUTER JOIN
en utilisant le LEFT JOIN
clause.
Émulation de la jointure externe complète SQLite
L'instruction suivante émule le FULL OUTER JOIN
clause dans SQLite :
SELECT d.type,
d.color,
c.type,
c.color
FROM dogs d
LEFT JOIN cats c USING(color)
UNION ALL
SELECT d.type,
d.color,
c.type,
c.color
FROM cats c
LEFT JOIN dogs d USING(color)
WHERE d.color IS NULL;
Code language: SQL (Structured Query Language) (sql)
Fonctionnement de la requête.
- Parce que SQLilte ne prend pas en charge le
RIGHT JOIN
clause, nous utilisons leLEFT JOIN
clause dans le secondSELECT
à la place et inversez les positions descats
etdogs
tableaux. - L'
UNION ALL
La clause conserve les lignes en double des jeux de résultats des deux requêtes. - Le
WHERE
clause dans le secondSELECT
L'instruction supprime les lignes déjà incluses dans le jeu de résultats du premierSELECT
déclaration.
Dans ce tutoriel, vous avez appris à utiliser le UNION ALL
et LEFT JOIN
clauses pour émuler SQLite FULL OUTER JOIN
clause.