Kioob
mardi 2 septembre 2008 à 01:00
Hello,
le plus propre est très certainement la table dédiée à cela, comme conseillée par
petit-ourson.
Mais il y a au moins deux autres approches pas hyper clean et assez spécifiques à MySQL :
1) utiliser un champ ENUM pour tes langues. L'ordre dans lequel tu entres les valeurs sera celui utilisé pour le tri.
L'avantage c'est que c'est assez simple à mettre en place, mais l'ordre des langues sera toujours le même... et certains développeurs risquent peut être un jour de chercher pendant des heures pourquoi le champ n'est pas trié par ordre alphabétique...
2) bricoler un champ "ordre_tri" à la volée à coup de "if()", puis faire le tri là dessus. C'est très souple, et n'impactera que la/les requêtes qui nécessitent ça. Par contre boujour la soupe de nouilles pour le débugage.
Sur le principe ça donnerait un truc de ce genre :
CODE
select champA, champB, champC, if( champB = 3; 1; if( champB = 8; if( champC < 5; 3; 4 ); 2 ) ) as ordre_tri
from tableBizarre
where [...]
order by champA, ordre_tri
Cette dernière solution je ne m'en sert généralement qu'avec des booléens... ou en dernier recours.