[MySQL] Un sort un peu spécial

Un sort un peu spécial [MySQL] - SQL/NoSQL - Programmation

Marsh Posté le 28-07-2007 à 15:44:35    

Bonjour à tous,
 
Je me casse les dents sur un problème qui j'espère sera à vos yeux simple et non avenu (ça veut dire facile à régler). Je m'explique. Je suis en train de développer un système de gestions de lots et les contraintes concernant l'exportation sont les suivantes :  
Si le champ 'Mot-clé' est présent (comprendre 'IS NOT NULL') alors trier suivant ce champ, sinon suivant 'Auteur'. Là-dessus je vous vois tous ouvrir de grands yeux, "Mon dieu, un simple ORDER BY mot_cle, auteur" et c'est réglé ! Et bien non pas exactement !
 
Par exemple, voilà le résultat attendu, dans lequel les mots-clés sont entourés de crochets, les entrées sans crochets ont donc pour valeur de mot_cle NULL :
 
- Adam, Marcel : "La vie, la vraie"
- Balzac, Honoré de : "Ma vie"
- [MyLife] Ali, Mohamed : "Mon dernier combat"
- Proust, Marcel : "Du côté de chez Swan"
- [YourLife] Brown, Alphonse : "Le frunkp"
- [YourLife] Daudet, Alphonse : "Yeah, mean"
 
En exécutant une requête du type :

Code :
  1. SELECT * FROM .... ORDER BY mot_cle,auteur_nom,auteur_prenom,date_edition_classement;


 
Le résultat sera :
 
- Adam, Marcel : "La vie, la vraie"
- Balzac, Honoré de : "Ma vie"
- Proust, Marcel : "Du côté de chez Swan"
- [MyLife] Ali, Mohamed : "Mon dernier combat"
- [YourLife] Brown, Alphonse : "Le frunkp"
- [YourLife] Daudet, Alphonse : "Yeah, mean"
 
Ce qui ne correspond pas au résultat attendu !  
 
J'avoue que je sèche ! Si quelqu'un a une idée  :) ?
 

Reply

Marsh Posté le 28-07-2007 à 15:44:35   

Reply

Marsh Posté le 28-07-2007 à 17:29:08    

Bonjour,

 

A condition de supprimer les crochets, ceci fonctionne :

Code :
  1. select if(mot_cle is not null, mot_cle, nom) as tri, nom, prenom
  2. from latable
  3. order by tri, nom


Message édité par jeca le 28-07-2007 à 17:30:01
Reply

Marsh Posté le 29-07-2007 à 14:04:59    

Merci ;) Je regarde ça de suite !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed