Tri des résultats d'une requete

Eléphanteau du PHP | 31 Messages

18 janv. 2007, 00:10

Bonjour à tous

J'effectue une requete dans une BDD : chaue enregistrement contient valeur date_acte, date_naissance, date_bapteme, ...(une colonne au moins contient une date, parfois 2 colonnes ou 3 colonnes)

Je voudrai rélaiser le tri suivant, qui va dépendre des valeurs contenues dans les champs :
tri chronologique fondé sur 1 valeur date avec par odre de priorité date_naissance si != "0000-00-00" ; date_bapteme si date_naissance si == "0000-00-00" et date_bapteme != "0000-00-00" ; date_acte si date_naissance si == "0000-00-00" et si date_bapteme== "0000-00-00" ;

L'object est de simuler un ordre chronologique parfait.

je en cois pas du tout comment faire simplement.
Quelqu'un a une piste ?

Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

18 janv. 2007, 00:26

A priori, si tu mets simplement tes colonnes dans l'ordre, comme toutes les autres dates sont à zéro pour une ligne, tu devrais obtenir directement ton résultat nan ?

Code : Tout sélectionner

ORDER BY date_naissance desc, date_bapteme desc, date_acte desc
tu devrais obtenir :

Code : Tout sélectionner

naissance | 0000-00-00 | 0000-00-00 0000-00-00 | bapteme | 0000-00-00 0000-00-00 | 0000-00-00 | acte
Sinon tu dois pouvoir jouer avec les case/when, mais je ne sais pas trop si ca marche dans un order by...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 31 Messages

18 janv. 2007, 00:29

Effectivment, le tri parorder ne fonctionne pas correctement = d'aord le premier tri, puis le second, puis le troisième.
Or l'objectif est d'obtenir un tri tenant compte de l'existence ou non de la date avec ordre de priorité.

Je bloque aussi sur l'introduction de if / case ...

Mais je suppose qu'il y a une methode plus simple !!