8795 sujets

Développement web côté serveur, CMS

Bonjour à tous,

après quelques heures de recherches infructueuses je me tourne vers vous pour m'aider à résoudre mon problème.

voici un table (utf8) qui est comme son nom l'indique Smiley smile

table titres_de_films :


+---------+---------------------------+
+ id      + titre                     +
+---------+---------------------------+
+ 1       + à l'ouest d'eden          +
+ 2       + autant en emporte le vent +
+ 3       + zorro                     +
+ 4       + star wars                 +
+---------+---------------------------+


que j'interroge de la manière suivante :


SELECT DISTINCT LEFT( titre, 1 ) 
FROM titres_de_films
GROUP BY titre


et cela me retourne :


+---------------------------+
+ LEFT( titre, 1 )          +
+---------------------------+
+ à                         +
+ s                         +
+ z                         +
+---------------------------+


Petit problème le a accentué (à) est retourné avant le a sans accent (autant).
Ce que je souhaiterais c'est de récupérer soit le a sans accent (que MySQL ordonne les caractères sans accents avant ceux qui en possèdent), soit que MySQL ne fasse pas la différence entre à et a (j'imagine une histoire de collation)

exemple :

+---------------------------+
+ LEFT( titre, 1 )          +
+---------------------------+
+ a                         +  <-- sans accent
+ ...                       +


J'aimerais autant que faire se peut éviter de devoir remixer le tout en PHP après coup...

Merci de votre aide
Modifié par nataz (16 Oct 2008 - 13:33)
Modérateur
Salut Nataz,

À mon humble avis, je ne crois pas que ce soit possible. Je viens de regarder la doc officielle de Mysql et rien de bien concret. Tu peux tout simplement préparer une fonction perso en php et l'appeler quand tu en as besoin.

À vue de nez, pour préparer ta fonction perso, tu peux renvoyer tes données dans un array et ensuite les trier comme bon te semble. J'avoue que ce code est délicat à faire mais pas du tout impossible.

++
Merci Nolem,

c'est apparemment aussi ma conclusion, quoique une expression rationnelle dans la requête pourrait le faire mais vu le nombre d'accents possibles ça devient vraiment trop lourd.

Je vais donc faire ma transformation en «post-production» Smiley smile