Select: afficher 1 valeur par défault si le champ est null ou ne contient rien

Mhh
Invité n'ayant pas de compte PHPfrance

25 oct. 2007, 16:06

Bonjour,

je fais le select suivant :

Code : Tout sélectionner

SELECT id_client, accessoires FROM client
Ca me donne le résultat suivant :

Code : Tout sélectionner

1 lunettes 2 3 montre 4 bijoux
L'id_client 2 a le champ accessoir à NULL

Comment réécrire ma requete pour qu'il me sorte "Aucun" à la place de '' pour les accessoires de l'id_client 2 ? En gros, j'aimerais que la requête produise le résultat suivant :

Code : Tout sélectionner

1 lunettes 2 Aucun 3 montre 4 bijoux
Merci !

d0m
Mammouth du PHP | 1141 Messages

25 oct. 2007, 16:12

Si tu veux que ca le fasse au niveau SQL, pourquoi ne pas mettre justement 'aucun' par défaut pour ce champ au lieu de null?

Invité
Invité n'ayant pas de compte PHPfrance

25 oct. 2007, 16:14

Par ce que je n'ai pas le droit de changer la valeur du champ dans la table. Je dois faire avec ce que j'ai...
Aussi, je ne veux pas passer par un script, il faut que ça se fasse par la requête sql.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

25 oct. 2007, 16:23

Il existe la fonction MySQL IFNULL(expr1, expr2) qui retourne expr1 si elle n'est pas nulle, expr2 sinon. Je pense que ça devrait répondre à ton besoin.

Sache qu'il existe également une fonction MySQL COALESCE(expr1, expr2, ...) qui retourne la 1ère valeur non nulle de la liste d'argument, ou NULL si tout les arguments sont null. Cette fonction peut être utile si tu utilises des jointure où tu veux utiliser une colonne de la table 1, ou une colonne de la table 2 si la 1ère est nulle, voire une valeur par défaut si les 2 colonnes précédentes sont nulles ;)

@dom : ça serait dommage de modifier la structure de la base pour une question d'affichage ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer