Aidez-moi à monter ma requête SQL

titijoe -  
djkent1 Messages postés 381 Statut Membre -
Bonjour,

Ca parait tout simple, mais voilà, je n'y arrive pas. J'ai une table du style :

------------------
liste | inscrit
------------------
2 | 10
2 | 11
2 | 13
3 | 12
4 | 10

J'ai besoin en une seule requête (pas de requêtes imbriquées) de sélectionner la liste de mes "inscrits" appartenant à une liste donnée à condition qu'il n'existe qu'un seul "inscrit" dans la table.

Exemple Si je fais une requête avec une des listes suivantes :
- Pour la liste 2, mon résultat doit être : 11, 13
- Pour la liste 3, mon résultat est le 12
- Pour la liste 4, aucun résultat.

Une idée?

Merci!
A voir également:

7 réponses

loicDu28 Messages postés 342 Statut Membre 53
 
Bonjour,

un truc du genre :
select ce que tu souhaite afficher
from table dont tu as besoin
where jointure si besoin (si plusieurs tables)
and id_liste = numéro de la liste souhaité
HAVING count(*) = 1; 


quelque chose comme ça devrait faire l'affaire je pense.
0
titijoe
 
Merci, mais le problème là, c'est qu'il fait une selection sur une liste précise. Donc il ne regarde pas si l'id de l'inscrit existe aussi pour un autre id de liste.
0
loicDu28 Messages postés 342 Statut Membre 53
 
Donc il ne regarde pas si l'id de l'inscrit existe aussi pour un autre id de liste.
suis désolé mais j comprend pas vraiment, peux tu rexpliquer le problème avec des exemples??
0
titijoe
 
En fait, mes exemples sont là dans mon premier message. Je ne sais pas quoi donner d'autre.

Je vais expliquer différement :

J'ai une gestion d'inscrits couplée à une gestion de listes.
Chaque inscrit peut appartenir à une ou pluisieurs listes.

ma table contenant ces infos contient l'id de la liste, et l'id de mon inscrit.
Si mon inscrit appartient à 2 listes, alors j'ai 2 enregistrements :
- liste:3 ->inscrit:8
- liste:4 ->inscrit:8

Si mon inscrit appartient à une liste, je n'ai qu'une ligne :
- liste:3 -> inscrit:9

Si mon inscrit n'appartient à aucune liste, je n'ai pas de ligne.

Je dois maintenant extraire les inscrits de cette table qui appartiennent à une liste donnée et ayant qu'un seul enregistrement toutes listes confondues.

J'espère avoir expliqué au mieux...
0
loicDu28 Messages postés 342 Statut Membre 53
 
Donc si je comprend bien, tu veux afficher chaque liste ou se trouve qu'un seul inscrit??
0
titijoe
 
En fait, non, je veux pas afficher chaque liste. Uniquement celle que je passe en paramètre (where id_liste=x).
0
loicDu28 Messages postés 342 Statut Membre 53
 
Ok, dont tu veux afficher l'inscrit où les inscrits de la liste données, c'est ça?? (j'essaye de bien comprendre pour que ce soit plus clair pour ensuite pouvoir mieux te guider.)
0
wada
 
Bonjour

Tu veux afficher la liste de ceux qui ne sont inscrits que sur une seule liste n'est-ce pas?
0
titijoe > wada
 
Merci Wada, oui, c'est ça!! C'est tellement plus facile en le disant :-) et je reprécise :
Je veux afficher la liste de ceux qui ne sont inscrits que sur une seule liste "qui sera passée en paramètre". (where id_liste=x).

Voilà
0

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

Posez votre question
loicDu28 Messages postés 342 Statut Membre 53
 
Ok, je vois mieux.

Ben personnellement, je vois comment la réaliser mais avec l'utilisation d'une sous requêtes (req. imbriqué).

Car sans sous requêtes à mon avis cela va être difficile en effet.

Juste par curiosité, pourquoi veux tu pas de requête imbriqué??
0
titijoe
 
Plusieurs centaines de milliers de lignes...
La différence est notable!
0
djkent1 Messages postés 381 Statut Membre 48
 
Je suis de l'avis de loicDu28, je ne vois pas comment éviter le select imbriqué.
0