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 :

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 )))
Cette requete fonctionne parfaitement

Mais si je veux remplacer
1011, 1009
par le resultat d'une requetre qui donne ce 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)
resultat :

1011,1009
pour obtenir la nouvelle requete suivante :

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))))
le resultat de la requete est totalement different !!!


quelle betise ai-je faite ?

Merci d'avance

olivier