Requête SQL impossible ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Requête SQL impossible ?

par caroube » 21 oct. 2008, 12:30

tu peux également essayer

Code : Tout sélectionner

order by FIND_IN_SET(status,'EN COURS,VALIDE,TERMINE')

par Sékiltoyai » 18 oct. 2008, 14:15

Quant à "Sékiltoyai", je te remercie "royalement" pour ton post qui correspond exactement à ce que je cherchais !
De rien :)
C'est fantastique de pouvoir utiliser ce type d'option dans les requêtes SQL, mais j'ai beaucoup de mal à les trouver :(
En fait, il faut beaucoup flanner sur la doc mysql pour les connaître… Même avec une recherche je ne suis pas sur que tu aurais trouvé…

par Daviwys » 18 oct. 2008, 13:21

Salut et merci pour ces nouveaux post ;)
Mais au fait, Daviwys, qu'obtiens-tu lorsque tu exécutes ta requête ?
SELECT * FROM MaTable ORDER BY status;
elle retourne la liste de tous les enregistrements en triant dans l'ordre de mon "ENUM(VALIDE, EN COURS, TERMINE)" comme ceci :
- 5 enregistremants (VALIDE)
- 2 enregistrements (EN COURS)
- 7 enregistrements (TERMINE)

Quant à "Sékiltoyai", je te remercie "royalement" pour ton post qui correspond exactement à ce que je cherchais !

C'est fantastique de pouvoir utiliser ce type d'option dans les requêtes SQL, mais j'ai beaucoup de mal à les trouver :(

Encore merci à vous tous, et un bon week-end ;)

par Sékiltoyai » 18 oct. 2008, 11:19

Utilise ORDER BY FIELD();

par albat » 18 oct. 2008, 10:52

Mais au fait, Daviwys, qu'obtiens-tu lorsque tu exécutes ta requête ?
SELECT * FROM MaTable ORDER BY status;

par furiouslol » 18 oct. 2008, 10:49

Oui je sais :oops:

Mais je ne sais pas comment ordonner son enum autrement en une seule requete et sans tenir compte de la structure de la table ... :lol:

par albat » 18 oct. 2008, 09:37

Code : Tout sélectionner

(SELECT * FROM MaTable WHERE status="EN COURS ") UNION (SELECT * FROM MaTable WHERE status="VALIDE") UNION (SELECT * FROM MaTable WHERE status="TERMINE");
Syntaxiquement correct, mais qu'est-ce que c'est lourd !
3 scans complets de la table pour un seul et même traitement ! :sick:

Et puis le SELECT *, c'est mal... :non:

par furiouslol » 18 oct. 2008, 01:17

Salut,
Si tu veux organiser tes résultats sans forcément suivre l'ordre de ton enum, tu peux toujours faire un UNION

Code : Tout sélectionner

(SELECT * FROM `MaTable` WHERE `status`="EN COURS ") UNION (SELECT * FROM `MaTable` WHERE `status`="VALIDE") UNION (SELECT * FROM `MaTable` WHERE `status`="TERMINE");

par Daviwys » 18 oct. 2008, 00:39

Et bien merci pour ton message ;)

J'en conclu au passage que la réponse est "NON" à ma question.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par Berzemus » 14 oct. 2008, 10:01

Un order by sur un champ ENUM réarrange selon l'ordre des options possibles tels que définis dans ton create table (au moment de la création de la table).

Enfin, il me semble, j'ai virtuellement jamais utilisé.

Requête SQL impossible ?

par Daviwys » 13 oct. 2008, 23:11

Bonjour,

Est-il possible d'effectuer un "ORDER BY" sur le contenu d'une colonne ?

En faite, j'ai une table qui contient une colonne appelé "status" au format "ENUM" avec 3 contenus différents :
- VALIDE
- EN COURS
- TERMINE

Et ma requête actuelle est ainsi :
SELECT * FROM `MaTable` ORDER BY `status` ASC;

Et je voudrais afficher tous les enregistrements de ma table, mais en commençant par ceux qui ont comme status "EN COURS" par exemple.

Après moult recherche je commence à me demander si c'est possible ?

Merci.