Requête avec IS NOT NULL

Eléphant du PHP | 447 Messages

17 janv. 2010, 15:16

Hi!

Je veux faire une requête pour sélectionner une ligne d'une table en fonction d'un champ qui ne doit pas être vide... je ne veux sélectionner qu'une seule ligne et au hasard.

Alors je fais:
mysql_query('SELECT id, titre, urlmp3 FROM posts WHERE urlmp3 IS NOT NULL ORDER BY RAND() LIMIT 1');
Mais je n'obtiens pas le résultat voulu... De cette manière la requête me renvoie quand même des lignes avec un champ urlmp3 vide.

Comment formuler ma requête pour qu'elle me retourne 1 seule ligne, au hasard, et dont le champ en question n'est pas vide?
Probably (only a) Human Problem?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

17 janv. 2010, 15:19

IS NOT NULL ne sélectionne que les champs dont la valeur est NULL, pas vide. ;)
Et un champ contenant une chaine vide n'est pas un champ contenant la valeur NULL
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

Eléphant du PHP | 447 Messages

17 janv. 2010, 15:29

IS NOT NULL ne sélectionne que les champs dont la valeur est NULL, pas vide. ;)
Et un champ contenant une chaine vide n'est pas un champ contenant la valeur NULL
Mazette, ça c'est rapide! : )

Oui je viens de me rendre compe de la bévue...

Aussi y a-t-il une autre manière de procéder pour sélectionner un champ non vide?
Probably (only a) Human Problem?

Eléphant du PHP | 447 Messages

17 janv. 2010, 15:37

Visiblement ça fonctionne ainsi:
mysql_query('SELECT id, titre, urlmp3 FROM posts WHERE urlmp3 != "" ORDER BY RAND() LIMIT 1');
Probably (only a) Human Problem?