SELECT avec contraintes sur plusieurs lignes du set de résultats
Bonjour,
dans le cadre d'une représentation de graphe du type id => parent_id, je bloque sur une requête. Je cherche à récupérer tous les parent_id d'un noeud en fonction d'une liste.
Par exemple dans cet exemple minimal :
Code:
1 2 3 4 5 6 7 8 9 10
| id | parent_id
820 | 230
820 | 636
900 | 123
900 | 636
900 | 849
1095 | 1093
1095 | 861
1095 | 849
1095 | 636 |
je cherche à récupérer tous les parents des noeuds qui ont pour parent 636 ET 849 ce qui devrait sortir :
Code:
1 2 3 4 5 6 7 8
| id | parent_id
900 | 123
900 | 636
900 | 849
1095 | 1093
1095 | 861
1095 | 849
1095 | 636 |
je génère le premiers set de résultats avec une auto-jointure :
Code:
1 2
|
SELECT autoJoin.* FROM table LEFT OUTER JOIN table autoJoin ON table.id = autoJoin.id WHERE table.parent_id IN(636, 849) |
mais bloque complètement pour la suite, à savoir contraindre sur plusieurs lignes. J'ai cherché du côté de HAVING mais sans succès. Est-ce que c'est possible en une seule requête ?
Je pensais à un truc du style :
Code:
1 2 3 4
| SELECT parent_id FROM table
WHERE table.id
IN(SELECT autoJoin.parent_id FROM table LEFT OUTER JOIN table autoJoin ON table.id = autoJoin.id WHERE table.parent_id IN(636, 849))
HAVING... |
mais bloque donc sur la contrainte multi-rows.
En vous remerciant par avance pour l'aide.