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.