Bonjour a tous
j'ai une requete assez complexe qui integre une clause WHERE qui contient un EXISTS integrant une clause IN
Voici la requete :
Cette requete fonctionne parfaitement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SELECT N_Bague.Id_Centre, N_Bague.Bague_Lettre, N_Data.Id_Bird FROM N_Data INNER JOIN N_Session S ON (S.Id_Session = N_Data.Id_Session AND S.Actif = 1 AND N_Data.Actif = 1) INNER JOIN N_Bird ON (N_Bird.Id_Bird = N_Data.Id_Bird AND N_Bird.Actif = 1) INNER JOIN N_Marquage ON (N_Marquage.Id_Bird = N_Bird.Id_Bird) INNER JOIN N_Bague ON (N_Bague.Id_Bague = N_Marquage.Id_Bague) WHERE N_Bague.Id_Centre = :Id_Bagueur AND NOT(EXISTS(SELECT 1 FROM Ps_Fb_Lieudit_Pere(S.Id_Lieudit, 0) WHERE Ps_Fb_Lieudit_Pere.Id_Fils IN (1011, 1009 )))
Mais si je veux remplacerpar le resultat d'une requetre qui donne ce resultat,1011, 1009
resultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT LIST(P_Centre_Pays.Id_Etat) FROM P_Centre_Pays WHERE P_Centre_Pays.Id_Centre IN (101, 102)
pour obtenir la nouvelle requete suivante :1011,1009
le resultat de la requete est totalement different !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 SELECT N_Bague.Id_Centre, N_Bague.Bague_Lettre, N_Data.Id_Bird FROM N_Data INNER JOIN N_Session S ON (S.Id_Session = N_Data.Id_Session AND S.Actif = 1 AND N_Data.Actif = 1) INNER JOIN N_Bird ON (N_Bird.Id_Bird = N_Data.Id_Bird AND N_Bird.Actif = 1) INNER JOIN N_Marquage ON (N_Marquage.Id_Bird = N_Bird.Id_Bird) INNER JOIN N_Bague ON (N_Bague.Id_Bague = N_Marquage.Id_Bague) WHERE N_Bague.Id_Centre = :Id_Bagueur AND NOT(EXISTS(SELECT 1 FROM Ps_Fb_Lieudit_Pere(S.Id_Lieudit, 0) WHERE Ps_Fb_Lieudit_Pere.Id_Fils IN (SELECT LIST(P_Centre_Pays.Id_Etat) FROM P_Centre_Pays WHERE P_Centre_Pays.Id_Centre IN (101, 102))))
quelle betise ai-je faite ?
Merci d'avance
olivier
Partager