SQL - Crochets dans nom attribut

Résolu/Fermé
alexdu17200 Messages postés 1302 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 7 mars 2016 - 26 juin 2014 à 12:32
cyril1982 Messages postés 110 Date d'inscription vendredi 7 mars 2014 Statut Membre Dernière intervention 19 septembre 2018 - 5 juil. 2014 à 20:37
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

cyril1982 Messages postés 110 Date d'inscription vendredi 7 mars 2014 Statut Membre Dernière intervention 19 septembre 2018 12
1 juil. 2014 à 21:40
Bonsoir,

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

Tu utilises bien "order by" ?
0
alexdu17200 Messages postés 1302 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 7 mars 2016 835
2 juil. 2014 à 09:33
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
cyril1982 Messages postés 110 Date d'inscription vendredi 7 mars 2014 Statut Membre Dernière intervention 19 septembre 2018 12
2 juil. 2014 à 14:18
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
alexdu17200 Messages postés 1302 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 7 mars 2016 835
2 juil. 2014 à 15:02
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
cyril1982 Messages postés 110 Date d'inscription vendredi 7 mars 2014 Statut Membre Dernière intervention 19 septembre 2018 12
2 juil. 2014 à 15:07
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
alexdu17200 Messages postés 1302 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 7 mars 2016 835
Modifié par alexdu17200 le 2/07/2014 à 15:09
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