{MySQL} Condition ds une requête Select (IF)

Résolu/Fermé
guillaume_74 Messages postés 111 Date d'inscription samedi 18 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 - 14 août 2009 à 10:23
guillaume_74 Messages postés 111 Date d'inscription samedi 18 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 - 14 août 2009 à 17:01
Bonjour,
J'aimerai mettre une condition dans une requête "SELECT" pour afficher une colonne supplémentaire avec un libellé.
Au départ, le libellé je l'avais générer dans le code en PHP, mais je ne peux donc pas faire de tri dessus.
C'est pourquoi j'ai pensé le générer dans le select.
Cependant je ne connais pas la syntaxe et je ne sais pas ou la trouver.
Pour le moment j'ai tester avec un:
SELECT * ,(if (table1_id =2 OR table2_id=3) then "quelquechose" END) as champ_sup
FROM table1 t1
JOIN table2 t2 m ON t1.table1_ext=t2.table2_id
WHERE t1.champ="coucou"

pour avoir un affichage avec des:
**|**|table1_id|table2_id|**|champ_sup
**|**|1 |1 |**|
**|**|2 |1 |**|quelquechose

enfin par exemple... quelqu'un connaitrait l'adresse d'un tuto pour la syntaxe des ces conditions dans le select?
Merci d'avance! :)

3 réponses

guillaume_74 Messages postés 111 Date d'inscription samedi 18 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 22
14 août 2009 à 17:01
Pour ceux que ca intéresse, j'ai trouvé la solution a mon problème.

Alors dans la clause "select" il faut faire comme suit:
la syntaxe du if est: IF(test, si_vrai, si_faux)

Select *, IF(champ1 is null,IF(test2,"oui","non"),"non") from maTable
13
jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 185
14 août 2009 à 10:27
Du devrais aller voir du côté de CASE :
http://sql.1keydata.com/fr/sql-case.php
0
guillaume_74 Messages postés 111 Date d'inscription samedi 18 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 22
14 août 2009 à 10:32
Je vais voir ce que je peux faire avec un case, seulement c'est plutot un "IF" qu'il me faut (j'ai pas le droit de mettre ma vrai requête) mais elle est un peu plus complexe que de tester 2 valeurs.

C'est plutot du genre: si un champs est renseigner et pas un autre, tu mets telle valeur...
sinon, si telle valeur = telle autre valeur, tu mets "concaténé("blabla" + valeur de tel champ + "blabla)

en gros...
-2