Problème de programmation SQL

Résolu
marino -  
 marino -
Bonjour,
Quelqu'un peut-il m'aider sur ce prolème ?
Soit une table T comportant 2 colonnes A et B et se présentant ainsi :
A B
v
w 1
w 1
x
x 1
x
y 1
z
z 1
Je voudrais sortir les valeurs de la colonne A pour lesquelles toutes les lignes sont à 1 dans la colonne B, soit dans l'exemple w et y, sachant que le nombre de ligne ayant une même valeur dans A est variable.
Avez-vous une solution ? peut-être avec une requête récursive mais je ne suis pas assez calé en SQL pour celà.
Merci d'avance
Configuration: Windows XP Internet Explorer 6.0

9 réponses

  1. jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
     
    Heu ...
    bizarre ^^

    ben alors SELECT A FROM T WHERE A NOT IN(SELECT A FROM T WHERE( B!='1' OR B IS NULL))
    ^^
    1
  2. jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
     
    Bonjour,
    un truc comme ca devrait marcher
    SELECT A FROM T WHERE A NOT IN(SELECT A FROM T WHERE B!='1')
    0
  3. adns Messages postés 1152 Statut Membre 153
     
    bonjour

    j'ai pas trop saisie ce que tu veux mais je vais essayé quand meme :)

    select A from table where b='1' group by A;

    Adns
    0
  4. jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
     
    D'après ce que j'ai compris, il voulait récupérer le A quand toutes les occurences de A ont B qui est égal à 1
    Ton GROUP BY marcherait pas : il renverrait le x aussi, or quand A=x, il y a une des occurences qui a un B à vide

    x 1
    x
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. adns Messages postés 1152 Statut Membre 153
     
    A en effet j'avais mal compris :S

    la solution est donc la tienne ;)

    SELECT A FROM T WHERE A NOT IN(SELECT A FROM T WHERE B!='1') (jeangilles)

    Adns
    0
  7. marino
     
    Merci jeangilles
    Ca parait effectivement logique comme solution, mais j'ai un pb avec les valeurs NULL dans la colonne B qui apparemment ne sont pas prises en compte par le test != et ressortent donc dans la liste finale.
    0
  8. Sims'
     
    Hello,

    heu jeangilles, ta requête n'est pas un peu compliquée???

    il suffit de faire :
    SELECT A FROM T WHERE B=1
    0
  9. jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
     
    Ben non ca prendrait tous les A où B = 1, même s'il y a une autre occurence de ce meme A qui a un B != 1

    Or il veut les A où tous les B correspondant sont égaux à 1
    0
    1. Sims'
       
      ok, je n'avais pas bien compris... je croyais qu'il fallait simplement les élèments ou B était également à 1. DSL...
      0
  10. marino
     
    Ca marche Nickel. Encore un grand merci jeangilles
    0