Un IF() dans un WHERE
En SQL (tout du moins avec MySQL, je ne sais pas si c'est du SQL standard), on peut mettre un IF() dans une clause WHERE:
SELECT users.id FROM users, groups WHERE IF(users.group_id > 5, users.group_id = groups.id, 1)
Cette requête retourne les users dont le groupe existe s'il son id (au groupe) est supérieur a 5, plus ceux dont l'id du groupe est inférieure a 5, qu'il existe dans la table des groupes ou non.
Comments
Ho mais voilà un billet qu'il est interessant !
Bon à savoir en effet :)
du genre
SELECT "mes copains" FROM "nantes, groups WHERE IF "boire guiness" ??
RESULT= ASH
tu decouvres le if ? :)
ce que j'aimerai savoir c'est si c'est effectivement standart ou pas... :-)
Je doute que ce soit SQL-92 (puis de toutes manières du moment que ça fait ce que tu veux...). Le seul problème à mes yeux c'est ce produit cartésien généré par la requête...
Du coup j'aurai fait une sous-requête :)
Je doute que ce soit du SQL 92 (ça ne fait pas partie des mots réservés), c'est plutôt une fonction (et non un opérateur) spécifique à MySQL.
Pour un truc similaire dans le norme, il faut regarder du côté de coalesce.
cf :
www.contrib.andrew.cmu.ed...
dev.mysql.com/doc/refman/...