Entites maître/détail, je bloque ! [Oracle] - SQL/NoSQL - Programmation
Marsh Posté le 05-03-2012 à 22:55:43
Une idée comme ça :
- on fait une jointure qui compte, pour chaque id, le nombre de subid qui nous intéressent et qui y sont liés
- on ne tarde que les id dont le nombre correspond au nombre des subid qui nous intéressent
SELECT id |
md : table maitre/detail
Du coup, on recherche 2 fois les subid
- pour en avoir la liste
- pour en avoir le nombre
Marsh Posté le 08-03-2012 à 18:40:52
mrbebert a écrit : Une idée comme ça :
Du coup, on recherche 2 fois les subid |
Merci pour le coup de main
Du coup j'ai trouvé une autre technique :
SELECT id FROM
(SELECT id,
CASE WHEN subid IN (SELECT good_subid ...)
THEN 1 ELSE 0
END flag
FROM tab)
GROUP BY id
HAVING MIN(flag) = 1;
Cela a le mérite de n’accéder qu’une fois à la table.
Marsh Posté le 02-03-2012 à 18:23:30
Bonjour,
Je cherche à faire une requête qui m'échappe un peu il faut bien l'avouer.
Pour faire simple, j'ai une table d'entités maître/détail de ce genre :
ID / SUBID
1 A
1 B
1 C
1 D
2 E
2 F
Et j'ai aussi construit une (sous) requête qui est en mesure de me retourner une liste de toutes les entités détail ayant une certaine caractéristique : Disons qu'elle contient les valeurs A, B, E et F.
GOOD_SUBID
A
B
E
F
Je cherche à ne retourner que les entités "Maître" dont TOUTES les entités détail sont présentes dans ma liste.
Dans le cas présent, il faudrait que le résultat soit "2", car le "1" n'est pas éligible. (C et D étant manquants).
Comment qu'on fait ?
Bon en PL/SQL je m'en sortirais je pense, mais là il faut que je sorte ça avec du SQL standard et je n'y arrive pas. Je suis une merde.
Message édité par sateeva le 02-03-2012 à 18:31:23