Ordre des éléments sur une base de données

Nouveau WRInaute
Bonjour,


J'ai la requête suivante

Code:
 SELECT id,nom FROM gestion WHERE id=19 OR id=17 OR id=2


Moi je veux que le résultat soit afficher dans le même ordre que dans la requête : 19,17,2

mais le résultat me donne un ordre croissant de mon id : 2,17,19.

Est-ce qu'il existe un alternatif ou une solution ?

Merci
 
WRInaute passionné
Re: Ordre des éléments sur une base de donnée

douniacreation a dit:
Bonjour,


J'ai la requête suivante

Code:
 SELECT id,nom FROM gestion WHERE id=19 OR id=17 OR id=2


Moi je veux que le résultat soit afficher dans le même ordre que dans la requête : 19,17,2

mais le résultat me donne un ordre croissant de mon id : 2,17,19.

Est-ce qu'il existe un alternatif ou une solution ?

Merci

Dans ton exemple
Code:
 SELECT id,nom FROM gestion WHERE id=19 OR id=17 OR id=2 ORDER BY id DESC
aurait fonctionné. Mais je suppose que ce n'est pas ce que tu veux réellement car cela ne fonctionnera pas si tu veux le faire avec la requête:
Code:
 SELECT id,nom FROM gestion WHERE id=12 OR id=17 OR id=2
 
Nouveau WRInaute
Re: Ordre des éléments sur une base de donnée

non je veux pas les mettres par ordre de id, on peut avoir : 12,3,17,32 et les afficher de cette ordre.


Merci
 
WRInaute accro
Re: Ordre des éléments sur une base de donnée

Tu dois obligatoirement avoir un élément dans ta base de données qui correspond à l'ordre dans lequel tu veux trier tes enregistrements. Et l'inclure dans ta requete, même si tu n'affiches pas le champs.
L'autre option, mais elle est lourde et ne peux fonctionner que si tu as quelques enregistrement, est de faire des requetes individuelles, l'une derrière l'autre, que tu ajoutes à un tableau (add to array) et ensuite tu tries selon l'ordre du tableau. Mais ce n'est pas beau, et ça bouffe de la perf.

Par ailleurs, tu serais bien aimable d'enlever la photo http://www.douniacuisine.com/Recette/620/tagine-de-thon-au-chou.php qui m'appartient, et de réécrire le texte de la recette qui a été copié sur mon site, ce qui évitera du duplicate content
 
WRInaute discret
Attention requête tordue:

SELECT id,nom FROM gestion WHERE id=12 OR id=17 OR id=2 ORDER BY id=12 DESC, id=17 DESC, id=2 DESC

Ca devrait faire l'affaire
 
WRInaute accro
C'est pas mal, mais c'est pareil, c'est pas automatisé ^^ faut rajouter de la génération de chaine à partir d'un tableau pour que ça puisse servir dans plusieurs cas :)
Mais je retiens :)
 
WRInaute passionné
Bah... A mon humble avis, sa requête doit être construite de façon dynamique pour générer les conditions "OR"... Donc il ne devrait pas rencontrer de soucis pour construire la partie "ORDER" de la même façon... non?
 
WRInaute accro
Code:
SELECT id,nom FROM gestion WHERE id=19 OR id=17 OR id=2
Un peu hors sujet:
pour des "OR" multiples il y a la fonction "IN":
Code:
SELECT id,nom FROM gestion WHERE id IN('19','17','2')
 
WRInaute discret
oui c'est vrai c'est plus lisible et plus rapide à l'exécution aussi même si sur 3 OR le gain de temps n'est pas significatif

c'est une bonne habitude à prendre, et puis la requête est plus facile à construire avec un IN

Pour en revenir sur le ORDER BY id=1 desc, id=3 desc etc.. je pense qu'avec beaucoup d' id ça doit utiliser plein de ressources CPU.. à tester
 
WRInaute accro
spout a dit:
Code:
SELECT id,nom FROM gestion WHERE id=19 OR id=17 OR id=2
Un peu hors sujet:
pour des "OR" multiples il y a la fonction "IN":
Code:
SELECT id,nom FROM gestion WHERE id IN('19','17','2')

Oui et en plus tu peux utiliser le tableau pour générer la suite de la requete...
M'enfin j'ai l'impression qu'on parle un peu dans le vide :) serait ce un problème de photo ?
 
Nouveau WRInaute
Sullyvan a dit:
Attention requête tordue:

SELECT id,nom FROM gestion WHERE id=12 OR id=17 OR id=2 ORDER BY id=12 DESC, id=17 DESC, id=2 DESC

Ca devrait faire l'affaire


Merci les amis pour vos réponses, pour le moment c'est la seule solution qui a marché...

mais c'étais qu'un exemple avec 3 id, parfois ca peut aller vers 20 id (chaque membre peut ajouter ses albums préférés sur son profile).
 
Discussions similaires
Haut