Requette ORDER BY

WRInaute occasionnel
Bonjour,
j'ai un requete :


Code:
SELECT * FROM IWlocations ORDER BY type DESC, prix ASC


je voudrai choisir l'ordre de type pour l'affichage.
C'est a dire type contiend ces valeurs : studios, f1, f2, f3,...., garage,...

comment dans ma requette dire que je veu en premier par exemple studios , puis en 2 f1, puis ..... au lieu du desc qui classe par ordre croissant ou decroissant (asc ou desc)
 
WRInaute impliqué
En gros tu veux trier par taille de bien, au sens figuré dirons nous.

Je ne vois pas comment un langage (ici sql) peut savoir qu'un studio est plus petit qu'un f1 qui est plus petit qu'un f3.

A mon avis si tu veux faire un tri dans ce sens, tu ajoutes un champ à ta table et tu tries ce champ par ordre croissant par exemple.

type | ordre

studio | 1
f1 | 2
f2 | 3
f3 | 4

Select type from ma_table order by ordre

Ptet que les experts auront une autre solution :wink:
 
WRInaute impliqué
Bonsoir,

il faut rajouter un champ id à ta table en rangeant dans cet ordre:
TYPE ... id
studio ... 1
f1 ... 2
f2 ... 3
... ...

et faire ta requête avec "order by id"
 
WRInaute occasionnel
en fait j'ai trouvé une autre solution qui permet de faire le tri depuis a requete.

voici comment je fais :
Code:
SELECT CASE WHEN type = 'Studio' THEN 1 WHEN type = 'F1' THEN 2 WHEN type = 'F2' THEN 3......  END AS tri, type, prix, ..... FROM IWlocations ORDER BY tri, prix DESC

Si sa peut aider...
 
WRInaute discret
VeeTouine et franckM te proposent LA SOLUTION et tu préfères jouer avec le CASE dans le select!!

Bonjour les performances et surtout le code maintenable! Imaginons, un jour tu ajoutes une nouvelle catégorie F55, avec la solution proposées, t'auras à ajouter une ligne dans une table! Avec ta solution du dois réécrire ta requête (si jamais tu te rappelles qu'il faudra la réécrire)!
 
WRInaute occasionnel
pourquoi bonjour les performances ?

là c'est la solution que j'avais le plus facilement a mettre en place vue que je n'ai pas encore accès a la base.
 
WRInaute impliqué
fabrice88 a dit:
pourquoi bonjour les performances ?

là c'est la solution que j'avais le plus facilement a mettre en place vue que je n'ai pas encore accès a la base.

Comment travailler sur PHP avec des requêtes sur une base sans avoir accès à celle ci ? c'est trop galère...
 
WRInaute occasionnel
là n'est pas la question mais je n'y ai pas accès c'est parce que je ne suis pas chez moi et que je n'ai pas les codes pour y accéder a mysql dans l'immédiat pour ajouter des champs ou autres.
 
Discussions similaires
Haut