2 votes

Sélectionner l'intersection de plusieurs valeurs dans Oracle

J'ai un petit problème de SQL et j'ai besoin de votre aide. J'interroge une base de données Oracle à partir d'un flux de travail (terme spécifique à l'application). J'ai besoin d'obtenir la valeur correcte de la catégorie à partir d'une table qui ressemble à celle ci-dessous, avec une liste de CRI_ID.

    CAT             CRI\_ID
    268\_0\_43\_BR     506
    268\_0\_43\_BR     507
    268\_0\_43\_BR     508
    268\_0\_43\_BR     509
    462\_406\_42\_TR   508
    462\_406\_42\_TR   509

Cela semble simple mais le problème est que le même CRI_ID peut avoir plus d'un CAT. En gros, j'aurais donc une variable ${CRI_IDs} qui contient une liste de CRI_IDs. Prenons l'exemple suivant :

  • ${CRI_IDs}=506,507, 508,509 >> Attendu CAT=268_0_43_BR
  • ${CRI_IDs}= 508,509 >> Attendu CAT=462_406_42_TR

Cela rend impossible toute utilisation de Join/Intersect/sous-requête puisque je récupère toujours les deux catégories. Une idée de ce que serait une requête appropriée dans ce cas ?

J'ai déjà essayé des trucs comme ceux ci-dessous mais ça renvoie les deux catégories.

    select cat from table where cri\_id in (${CRI\_IDs});
    select table.cat from table join (select ${CRI\_IDs} from dual) tmp on table.cri\_id=tmp.id;

BTW n'hésitez pas à supposer qu'au lieu de la variable, j'ai une autre table (tmp par exemple) qui contient la liste des CR_ID dans une de ses colonnes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X