IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Tri par ordre alphabétique


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut Tri par ordre alphabétique
    Bonjour,
    Ma requête MySQL utilise ORDER BY mais affiche les résultats en plaçant les caractères accentués après les caractères de base (exemple é après z ou Z).
    Est-ce qu'il est possible de les trier dans l'ordre naturel?

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 330
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 330
    Billets dans le blog
    17
    Par défaut
    Cela dépend de la collation de ta colonne.

    Pour commencer tu peux vérifier l'état actuel :

    select all TABLE_NAME, COLUMN_NAME, DATA_TYPE, CHARACTER_SET_NAME, COLLATION_NAME
    from information_schema.COLUMNS
    where TABLE_SCHEMA = 'ta_base' and TABLE_NAME = 'ta_table';
    La doc :
    https://dev.mysql.com/doc/refman/8.0/en/charset.html
    https://dev.mysql.com/doc/refman/8.0...t-collate.html

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 611
    Billets dans le blog
    10
    Par défaut
    Sans avoir à changer la collation du serveur, de la base de données, de la table ou de la colonne, on peut la modifier grâce au mot clef COLLATE de la clause ORDER BY.

    Voir le manuel de référence ICI.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut
    Après essai, je constate que certaines collation sont incompatibles avec celle de départ (utf8_general_ci). Même en modifiant le choix de départ, je ne sais pas quelle collation choisir.

  5. #5
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 330
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 330
    Billets dans le blog
    17
    Par défaut
    Tu peux faire cette requête pour vérifier les couples collations/jeux compatibles et dispos sur ton système :

    select all *
    from information_schema.COLLATIONS
    where CHARACTER_SET_NAME regexp 'utf8'
    order by COLLATION_NAME asc;
    Les principaux aujourd'hui sont :

    COLLATION_NAME	CHARACTER_SET_NAME
    utf8mb4_0900_ai_ci	utf8mb4
    utf8mb4_0900_as_ci	utf8mb4
    utf8mb4_0900_as_cs	utf8mb4
    ai = insensible aux accents
    as = sensible aux accents
    ci = insensible à la casse
    cs = sensible à la casse

    Perso j'utilise utf8mb4 // utf8mb4_0900_ai_ci (c'est la config par défaut des configs MySQL actuelles).

    Si besoin ponctuellement de sensibilité je fais ORDER BY ma_colonne COLLATE utf8mb4_0900_as_cs ASC.

    Attention, les possibilités dépendent de ton SGBDR (MySQL ? MariaDB ?) et de sa version (MySQL 8 ?)

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut
    Merci @Escatefigue et @Séb. pour ces explications mais je viens de m'apercevoir que ma table est correctement triée. Mais le rendu avec DataTable (jQuery) est retrié dans le mauvais ordre. Il faut que je cherche de ce côté, s'il est possible de faire quelque chose.

    Je considère ma question comme résolue.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tri par ordre croissant
    Par KinF dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 13/12/2008, 20h19
  2. [Dbgrid] tri par ordre alphabetique
    Par olivier29 dans le forum C++Builder
    Réponses: 3
    Dernier message: 23/01/2006, 18h28
  3. Tri par ordre alpha, sensibilité à la casse
    Par linou dans le forum Oracle
    Réponses: 2
    Dernier message: 30/09/2005, 14h45
  4. [JComboBox] tri par ordre alphabetique
    Par GETah dans le forum Composants
    Réponses: 3
    Dernier message: 22/04/2005, 14h10
  5. Tri par ordre alphabétique
    Par orus8 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 17/04/2003, 19h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo