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 order by se place en dernière position
    $select = "SELECT * FROM xxxxxx WHERE pupitre like 'cdc', 't1', 't2', 'bas', 'bar' ORDER BY nom";
    1. Salut, normalement un "order by" se met après le "where"
      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. 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. 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