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!

7 réponses

  1. 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
    1. 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
  2. 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
    1. 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
  3. 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
    1. titijoe
       
      En fait, non, je veux pas afficher chaque liste. Uniquement celle que je passe en paramètre (where id_liste=x).
      0
  4. 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
    1. wada
       
      Bonjour

      Tu veux afficher la liste de ceux qui ne sont inscrits que sur une seule liste n'est-ce pas?
      0
      1. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. titijoe
     
    Plusieurs centaines de milliers de lignes...
    La différence est notable!
    0
  8. djkent1 Messages postés 381 Statut Membre 49
     
    Je suis de l'avis de loicDu28, je ne vois pas comment éviter le select imbriqué.
    0