Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1523 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Oracle] Entites maître/détail, je bloque !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Oracle] Entites maître/détail, je bloque !

n°2129430
sateeva
Shawarma Police
Posté le 02-03-2012 à 18:23:30  profilanswer
 

Bonjour,
 
Je cherche à faire une requête qui m'échappe un peu il faut bien l'avouer.  :D  
 
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 ?   :sweat:  
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
mood
Publicité
Posté le 02-03-2012 à 18:23:30  profilanswer
 

n°2129598
sateeva
Shawarma Police
Posté le 05-03-2012 à 09:53:37  profilanswer
 

personne ? :(

n°2129725
mrbebert
Posté le 05-03-2012 à 22:55:43  profilanswer
 

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
 [:figti]  
 

SELECT id
FROM (SELECT md.id, count(1) nb
      FROM md
      WHERE subid IN ( SELECT good_subid ... ) -- requete qui liste les subid qui nous interessent
      GROUP BY md.id
     )
WHERE nb=(SELECT count(1) ...) -- requete qui compte les subid qui nous interessent


md : table maitre/detail
 
Du coup, on recherche 2 fois les subid
- pour en avoir la liste
- pour en avoir le nombre

Message cité 1 fois
Message édité par mrbebert le 05-03-2012 à 22:57:40

---------------
Doucement le matin, pas trop vite le soir.
n°2130416
sateeva
Shawarma Police
Posté le 08-03-2012 à 18:40:52  profilanswer
 

mrbebert a écrit :

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
 [:figti]

 

SELECT id
FROM (SELECT md.id, count(1) nb
      FROM md
      WHERE subid IN ( SELECT good_subid ... ) -- requete qui liste les subid qui nous interessent
      GROUP BY md.id
     )
WHERE nb=(SELECT count(1) ...) -- requete qui compte les subid qui nous interessent


md : table maitre/detail

 

Du coup, on recherche 2 fois les subid
- pour en avoir la liste
- pour en avoir le nombre

 

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.


Message édité par sateeva le 08-03-2012 à 18:41:57

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Oracle] Entites maître/détail, je bloque !

 

Sujets relatifs
[ORACLE 10G] Installation sous windows 7 et droits utilisateurs[Oracle] Droit accès Instance
relocaliser la database dans l´arboresence oracleComment lire la version d'Oracle Client
[Oracle] paramètres was_captures=NO dans $SQL_CAPTURE_BINDWindows : faire fonctionner TORA avec une BDD Oracle
[Oracle][.Net] SQL Tracker Oracle et .net[Résolu] Pb accès base oracle
Oracle : Restriction sur une requeteBalise OL le détail qui tue
Plus de sujets relatifs à : [Oracle] Entites maître/détail, je bloque !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR