[SQL] pb de sous requete avec plrs attributs

hinanui Messages postés 14 Statut Membre -  
hinanui Messages postés 14 Statut Membre -
Bonjour!!!

Voila, j ai un petit souci avec SQL. Je voudrais savoir s il est possible d utiliser une sous requete qui renvoie plusieurs lignes sur 2 colonnes et de tester si un couple fait parti de cette selection. En plus clair, voici la requete que je voudrais faire:

select...
from....
where (attribut1, attribut2) IN (
              select attribut1, attribut2
             from....
             where......
            )


j ai essaye de l executer ms ca plante, et je pense que ca vient du fait que je fais un test sur 2 attributs au lieu d un seul.... au fait, je bosse sous access 2000...

Est ce quelqu un aurait une idee lumineuse a me faire partager? :-)

merci d avance!!!!

5 réponses

romain_natiez Messages postés 179 Statut Membre 31
 
salut,
moi, ce que g vu en cours cette année, c'est qu'une sous requète ne renvoyait qu'une seule valeur

je pense que tu doit plutot utiliser un like, mais je suis pas sûr..

++
Romain_natiez
0
DaNot Messages postés 221 Statut Membre 163
 
Salut,

Encore une limitation d'Access : il ne faut utiliser qu'une seule colonne dans une sous-requete avec l'operateur IN.
La solution est d'utiliser l'operateur EXISTS :
SELECT *
FROM personnes p
WHERE EXISTS (SELECT *
               FROM test t
               WHERE p.age = t.age
               AND p.ville = t.ville);


DaNot
un Libre ouvert à la source...
0
hinanui Messages postés 14 Statut Membre
 
(re)Bonjour!

merci pour la reponse, mais en fait, ce q je voudrais serait de pouvoir recuperer un certain nombre de colonnes dont 2 qui feraient partie d'une liste de couples generee par une sous requete, d ou la comparaison avec un couple d attribut.
En fait, ma vraie requete serait :

select tblca.*
from tblca
where  ( tblca.etabid, tblca.annee) in 
(SELECT tblCa.EtabID, Min(tblCa.Annee) AS annee
FROM tblCa
GROUP BY tblCa.EtabID);


la sous requete renvoie pour chaque etabID l annee la plus ancienne connue pour un enregistrement. Et moi, je voudrais, par la requete principale, recuperer toutes les informations pour l annee la plus ancienne pour chaque etabID.

je ne sais pas si c est tres clair, mais voila....

je suis ouverte a toutes autres suggestions!

merci d avance
0
DaNot Messages postés 221 Statut Membre 163
 
Re-Salut,

Bon, j'ai fait un petit exemple et j'ai trouver une solution :
1. Faire une 1ere requete (min_tblCa par ex) retournant l'annee minimum pour chaque Id :
SELECT tblCa.EtabID, Min(tblCa.Annee) AS annee
FROM tblCa
GROUP BY tblCa.EtabID;


Ensuite, faire une seconde requete avec la table tblCa et la 1ere requete :
select tblca.*
from tblca, min_tblCa
where  tblca.etabid = min_tblCa.etabid
tblca.annee = min_tblCa.annee;


DaNot
un Libre ouvert à la source...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hinanui Messages postés 14 Statut Membre
 
merci pour l idee!
0