Requête sur le résultat d'une requête

Résolu
sev622
Messages postés
62
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
12 septembre 2005
- 26 juil. 2005 à 10:58
Zlub
Messages postés
809
Date d'inscription
mercredi 11 octobre 2000
Statut
Membre
Dernière intervention
29 septembre 2010
- 27 juil. 2005 à 08:28
Bonjour,


J'ai un problème dans la construction de ma requête.


J'ai une table avec 2 champs numériques : id_p, id_f


Je veux compter le nombre d'id_p qui n'est associé qu'à un seul id_f que je détermine


ex : id_p id_f
1 0
1 5
2 0
3 1
3 5

je recherche par rapport à id_f=0. Je veux savoir si un id_p qui est associé à id_f=0 est associé à un autre id_f
id_p = 1 est associé à id_f=5 et id_f=0 donc ne doit pas compter
id_p=2 est associé uniquement à id_f=0 donc doit intervenir dans le compteur
Pour l'instant, je fais deux requêtes :
select id_p from table where id_f=0
et
pour chaque résultat :
select count(*) from table where id_p=resultat

Je voudrais ne faire qu'une requête
J'espère avoir bien exposé mon problème
Merci

5 réponses

Zlub
Messages postés
809
Date d'inscription
mercredi 11 octobre 2000
Statut
Membre
Dernière intervention
29 septembre 2010
9
27 juil. 2005 à 05:44
Salut,

Désolé, pour le post précédent... Faut que j'arrête de boire... LOL



SELECT ID_P FROM TABLE WHERE ID_P IN (SELECT ID_P FROM TABLE WHERE ID_F=0)

GROUP BY ID_P

HAVING COUNT(*) =1;

++

Zlub
3
Zlub
Messages postés
809
Date d'inscription
mercredi 11 octobre 2000
Statut
Membre
Dernière intervention
29 septembre 2010
9
27 juil. 2005 à 04:38
Salut,

Tu peux essayer une requête dans ce style :



SELECT ID_P, COUNT(*) AS NB FROM TABLE WHERE ID_P IN (SELECT ID_P FROM TABLE WHERE ID_F=0)

GROUP BY ID_P;

++

Zlub
0
Zlub
Messages postés
809
Date d'inscription
mercredi 11 octobre 2000
Statut
Membre
Dernière intervention
29 septembre 2010
9
27 juil. 2005 à 04:46
Salut,

Et si tu veux garder que ceux qui sont simplement associé à zéro, alors



SELECT ID_P

FROM (SELECT COUNT(*) AS NB,ID_P FROM TABLE WHERE ID_P IN (SELECT ID_P FROM TABLE WHERE ID_F=0)

GROUP BY ID_P)

WHERE NB=1;

++

Zlub
0
sev622
Messages postés
62
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
12 septembre 2005

27 juil. 2005 à 08:21
merci, ça marche très bien
0

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

Posez votre question
Zlub
Messages postés
809
Date d'inscription
mercredi 11 octobre 2000
Statut
Membre
Dernière intervention
29 septembre 2010
9
27 juil. 2005 à 08:28
Salut,

De rien, ce fût un plaisir de faire une pause requête...

++

Zlub
0