Aidez-moi à monter ma requête SQL

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!

7 réponses

  1. 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.
    1. 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.
  2. 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??
    1. 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...
  3. Donc si je comprend bien, tu veux afficher chaque liste ou se trouve qu'un seul inscrit??
    1. En fait, non, je veux pas afficher chaque liste. Uniquement celle que je passe en paramètre (where id_liste=x).
  4. 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.)
    1. Bonjour

      Tu veux afficher la liste de ceux qui ne sont inscrits que sur une seule liste n'est-ce pas?
    2. @wadaMerci 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à
  5. 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é??
    1. Plusieurs centaines de milliers de lignes...
      La différence est notable!
      1. Je suis de l'avis de loicDu28, je ne vois pas comment éviter le select imbriqué.