Order by .....

Résolu
Bonjour,

J'aimerais afficher ma table selon un certain critère.
Dans ma table j'ai un champ "pupitre" qui peut recevoir comme donnée t1, t2, bas, bar ou cdc.
J'aimerais pouvoir afficher toutes les données dans l'ordre cdc, t1, t2, bas puis bar..

J'ai essayé cela, et pense ne pas être trop loin :
$select = "SELECT * FROM xxxxxx ORDER BY nom WHERE pupitre like 'cdc', 't1', 't2', 'bas', 'bar' ";

mais ça fonctionne pas ..... J'ai comme message d'erreur :

Erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE pupitre like 'cdc', 't1', 't2', 'bas', 'bar'' at line 1

Merci pour l'aide

5 réponses

  1. Le "like" comme tu l'a écrit ne sert à rien, tu aurais fait where pupitre = 't2' c'est la même chose.

    Tu dois formater la chaîne pour que le "like" puisse agir :

    exemple LIKE 'cdc%' trouvera tous les enregistrements qui commencent par cdc.

    Tu as de très bonnes documentations sur le SQL ici : https://sql.developpez.com/#commencer-sql
    1. J'ai trouvé .............

      $select = "SELECT * FROM choristes WHERE pupitre like 'cdc' OR pupitre like 't1' OR pupitre like 't2' OR pupitre like 'bas' OR pupitre like 'bar' ORDER BY nom ASC";

      A ++
      1. J'ai écrit ceci :

        $select = "SELECT * FROM choristes WHERE pupitre like 'cdc' OR 't1' OR 't2' OR 'bas' OR 'bar' ORDER BY nom ASC";

        et il ne m'affiche que le premier résultat, c'est à vdire celui de cdc. Pas les autres ....
        1. Salut, normalement un "order by" se met après le "where"
          1. Le order by se place en dernière position
            $select = "SELECT * FROM xxxxxx WHERE pupitre like 'cdc', 't1', 't2', 'bas', 'bar' ORDER BY nom";