SQL - Crochets dans nom attribut

Résolu
alexdu17200 Messages postés 1579 Statut Membre -  
cyril1982 Messages postés 110 Statut Membre -
Salut à tous, j'ai une base de données que sur laquelle j'effectue des requêtes, mais j'aurai besoin d'organiser le résultat d'une requête, je voudrais que l'ordre soit en fonction de l'attribut data[0], mais il semblerai que le SQL n'apprécie pas mes crochets.

Quelqu'un connaîtrait-il une méthode pour qu'il soit pris en compte? Si je pouvais éviter à avoir à modifier le nom de mes attributs, çà m'arrangerai, merci.

1 réponse

  1. cyril1982 Messages postés 110 Statut Membre 12
     
    Bonsoir,

    Je ne suis pas sûr de comprendre, peux-tu nous donner ta requête ?

    Tu utilises bien "order by" ?
    0
    1. alexdu17200 Messages postés 1579 Statut Membre 841
       
      Bonjour,

      Je peux vous donner la requête (DATA est le nom de ma table, et data[0]/[1] les noms de mes champs):
      SELECT data[0], data[1] FROM DATA WHERE 1 -- Jusque là, çà fonctionne
      ORDER BY data[0]; -- C'est là que çà coince, çà ne change rien dans l'ordre, alors que la requête via PhpMyAdmin affiche correctement le résultat

      Je suis arrivé à faire ce que je souhaitais en passant par
      SELECT * FROM DATA
      , en modifiant la structure/ le contenu des premiers éléments, puis avec la fonction php
      array_multisort($data, SORT_ASC);
      et en modifiant de nouveau la structure des premiers éléments pour revenir à la structure précédente.
      0
    2. cyril1982 Messages postés 110 Statut Membre 12
       
      Bonjour,

      Peut-être en utilisant un alias ?

      SELECT data[0] as toto, data[1] FROM DATA WHERE 1 -- Jusque là, çà fonctionne
      ORDER BY toto;

      Ah tiens, je n'ai jamais utilisé la fonction array_multisort.
      0
    3. alexdu17200 Messages postés 1579 Statut Membre 841
       
      Effectivement, çà fonctionne avec un alias, également avec des quotes autour des noms des éléments.

      Par contre, çà "range" toujours pas comme je le voulais, en fait ma requête avec les quotes renvoyait exactement le même résultat et surtout le même ordre.

      Dans ma base dans la colonne data[0], j'ai des noms qui conservent la même structure
      data_0 jusqu'à data_12, etc. Et je pensais qu'avec un Order By on pouvait ranger dans l'ordre en prenant en compte les chiffres à la suite, mais j'ai réagit un peu tardivement qu'il s'agissait de chaîne et donc que le tri se faisait pour chaque caractère. J'avais ma liste dans l'ordre data_0, data_10, data_11, data_12, data_2

      Finalement j'arrive à ce que je voulais, mais c'est du bidouillage, j'ai ma liste, je dégage la partie "data_", je fais mon tri avec array_multisort (qui tri l'élément de la première colonne du tableau dans l'ordre que l'on souhaite, en prenant en compte le fait que çà soit un tableau multidimensionnel et donc que les données derrières restent sur la bonne ligne)
      Après mon tri, je remet mon "data_" avant la valeur et là je l'ai dans le bon ordre.
      0
    4. cyril1982 Messages postés 110 Statut Membre 12
       
      Ah oui le grand classique du tri de colonne de type varchar.
      Cela m'arrive souvent de galérer avant de me rendre compte de l'origine du problème !!
      0
    5. alexdu17200 Messages postés 1579 Statut Membre 841
       
      Exactement, je suis heureux de voir que je suis pas le seul dans ce cas là^^

      Merci pour ton aide et d'avoir pris le temps de lire tous mes pavés.

      A+
      0