Bonjour,
alors je travaille sur une base Oracle 9i et je n'arrive pas a fusionner 2 requetes qui portent sur la meme table.
Ma table TIERS est composée des champs suivants :
- CODINTcode tiers interne (toutes valeurs possibles)
- TYPINT type tiers interne (toutes valeurs possibles)
- CODEXTcode tiers externe (toutes valeurs possibles)
- FLGTIER flag tiers (valeur possible 0 ou 1)
Exemple :
code tiers interne - Type tiers interne - Code tiers Externe - Flag tiers
1 - A - 001 - 0
1 - A - 002 - 1
2 - A - 002 - 1
3 - B - 004 - 0
En gros pour le coupe code tiers interne / type tiers interne j'ai un code tiers externe et je dois mettre a jour mon flag tiers en conséquence (je ne dois avoir q'un seul flag = 1 pour le couple code tiers interne / type tiers interne).
Le flag tiers est mis a jour dans une requete précédente selon certains critères.
Comme cela ne couvre pas toutes les lignes une seconde requete a été mise en place, et cette fois elle met a jour trop de lignes (certains couples code tiers interne / type tiers interne ont été mis a jour a 1 et ma requete met a jour une ligne en plus).
J'ai trouvé une nouvelle requete qui me permet de ramener la liste des couples code tiers interne / type tiers interne dont le flag est resté a 0 après l'étape précédente.SELECT A.TYPINT, MIN(A.CODEXT), A.CODEINT
FROM TIERS A
GROUP BY A.TYPINT, A.CODEINT
La question : avez vous une idée de comment fusionner mes 2 Requetes ?SELECT B.CODINT, B.TYPINT, SUM(B.FLGTIER)
FROM TIERS B
HAVING SUM(B.FLGTIER)=0
GROUP BY B.CODINT, B.TYPINT
Tel quel j'ai essayé avec Union, mais comme je n'ai pas les memes champs dans les SELECT, ca ne marche pas. J'aurais bien essayé le EXIST, mais la requete me dit que ce n'est pas possible
SELECT A.TYPINT, MIN(A.CODEXT), A.CODEINT
FROM TIERS A
WHERE (SELECT B.CODINT, B.TYPINT, SUM(B.FLGTIER)
FROM TIERS B
WHERE A.CODINT = B.CODINT AND A.TYPINT = B.TYPINT
HAVING SUM(B.FLGTIER)=0
GROUP BY B.CODINT, B.TYPINT)
GROUP BY A.TYPINT, A.CODEINT
Partager