Problème de programmation SQL

Résolu/Fermé
marino - 8 juil. 2009 à 10:48
 marino - 9 juil. 2009 à 09:49
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
A voir également:

9 réponses

jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 185
8 juil. 2009 à 12:59
Heu ...
bizarre ^^

ben alors SELECT A FROM T WHERE A NOT IN(SELECT A FROM T WHERE( B!='1' OR B IS NULL))
^^
1
jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 185
8 juil. 2009 à 10:52
Bonjour,
un truc comme ca devrait marcher
SELECT A FROM T WHERE A NOT IN(SELECT A FROM T WHERE B!='1')
0
adns Messages postés 1094 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 27 mars 2012 153
8 juil. 2009 à 10:56
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
jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 185
8 juil. 2009 à 11:00
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

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

Posez votre question
adns Messages postés 1094 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 27 mars 2012 153
8 juil. 2009 à 11:06
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
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
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
jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 185
8 juil. 2009 à 13:16
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
ok, je n'avais pas bien compris... je croyais qu'il fallait simplement les élèments ou B était également à 1. DSL...
0
Ca marche Nickel. Encore un grand merci jeangilles
0