Jointure sur la même table avec récupération des valeurs NULL
Bonjour,
J'ai un soucis pour écrire une requête faisant une jointure sur une même table.
Voici le contenu de ma table d'exemple :
Code:
1 2 3 4 5 6 7 8 9 10 11
| +---------+----+---+
| id_file | k | v |
+---------+----+---+
| 1 | A1 | A |
| 1 | B1 | B |
| 1 | C1 | C |
| 2 | A1 | D |
| 2 | B1 | E |
| 3 | B1 | F |
| 3 | C1 | G |
+---------+----+---+ |
Récupération datas pour les fichiers ayant comme id_file 1 et 2
Code:
1 2 3 4 5 6 7
| SELECT
a.k k1, a.v v1,
b.k k2, b.v v2
FROM test a
LEFT JOIN test b ON a.k = b.k AND b.id_file = 2
WHERE a.id_file = 1
ORDER BY a.k; |
Code:
1 2 3 4 5 6 7
| +----+----+------+------+
| k1 | v1 | k2 | v2 |
+----+----+------+------+
| A1 | A | A1 | D |
| B1 | B | B1 | E |
| C1 | C | null | null |
+----+----+------+------+ |
Cela fonctionne vu que je prends toutes les lignes de "b" mais je pense qu'il est possible de faire plus propre (et plus conforme ?)
Récupération datas pour les fichiers ayant comme id_file 2 et 3
Ici je ne vois pas trop comment tourner la requête pour obtenir ceci :
Code:
1 2 3 4 5 6 7
| +------+------+------+------+
| k1 | v1 | k2 | v2 |
+------+------+------+------+
| A1 | D | null | null |
| B1 | E | B1 | F |
| null | null | C1 | G |
+------+------+------+------+ |
Une petite idée ?