Requete sql, sélectionner un champ vide

sff

WRInaute impliqué
Bonjour, j'ai un problème

En fait j'ai 10 champs dans une table sql :

champ1, champ2, champ3 ... champ10.

En fait j'aimerais avec une requête sélectionner dans tous ces champs sql, un champ qui serait égal à 0 (si il y en a).

Comment je pourrais faire?
 

UsagiYojimbo

WRInaute accro
Tu peux en avoir plusieurs par enregistrement où il n'y en a qu'un ?

Sinon tu peux déjà regarder avec un select case sql, ca se fait bien (même si c'est un peu lourd).
 

sff

WRInaute impliqué
suite

Imaginons que

bag1id = 10
bag2id = 14
bag3id = 0
bag4id = 33

Je cherche à sélectionner avec une requete le champ qui est égal à 0

$bagquery = doquery("SELECT DISTINCT id FROM {{table}} WHERE bag1id='0' OR bag2id='0' OR bag3id='0' OR bag4id='0' AND id='".$userrow['id']."'", "users");

Ca me retourne pas le nom du champ en question
 

UsagiYojimbo

WRInaute accro
Forcément, tu ne sélectionne que l'id.

Si tu veux sélectionner le champ (s'il y en a un) qui est égal à zéro, tu vas (je pense) devoir passer par du select case en mysql, comme je le disais plus haut.

Ou alors (plus simple) de ramener tous tes champs potentiellement égaux à 0 et de faire les tests en php (enfin tout dépend du contexte dans lequel tu veux faire ça).
 

screuscreu

WRInaute impliqué
Re: suite

sff a dit:
Ca me retourne pas le nom du champ en question

Ah non ça c'est sûr ... a part tester en PHP après ... je vois pas.

Et pour l'optimisation ... il y a pire, franchement !

EDIT : grilled by UsagiYojimbo. Je te laisse tester les "cases". Merci de donner ta solution quand tu auras trouvé !
 

YoyoS

WRInaute accro
Re: suite

screuscreu a dit:
Et pour l'optimisation ... il y a pire, franchement !
Je ne parlais pas pour toi mais de la structure de sa table. Il aurait été préférable d'utiliser 2 tables. En une seule requête avec jointure ça aurait pu être possible simplement ...
 

Bool

WRInaute passionné
Ca ne répond pas au problème, mais déjà pour la clause "where" tu peux avoir un code plus compact/lisible :
Code:
where 0 in (champ1, champ2, champ3 ... champ10)

Sinon j'aurais tendance à rejoindre YoyoS : visiblement la structure de la table n'est pas adaptée.
 

Discussions similaires

Haut