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

9 réponses

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
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
adns Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   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
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

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

Posez votre question
adns Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   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
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
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
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
Sims'
 
ok, je n'avais pas bien compris... je croyais qu'il fallait simplement les élèments ou B était également à 1. DSL...
0
marino
 
Ca marche Nickel. Encore un grand merci jeangilles
0