sql trier les résultats par ordre déterminé

sql trier les résultats par ordre déterminé - SQL/NoSQL - Programmation

Marsh Posté le 09-12-2007 à 20:47:57    

Bonjour je suis chargé d'effectuer un programme de simulation d'affectation des étudiants de medecine
( j'avais concu coline y'à qques années )
Voici que je me suis appercu d'une chose
   est-il possible de retourner l'ordre de résultats sql selon cette liste
   cad de selectionner 195 en premier et 172 en dernier pour faire des affectations dans une boucle mysql_fetch_assoc()
 
Ou est-il possible de qqconques facon que ce soit de retrier le tableau des résultats sql
 
SELECT * FROM `ciel_agr` WHERE id IN ( 195, 200, 202, 174, 172 )
 
Merci et bonne soirée  :jap:


---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 09-12-2007 à 20:47:57   

Reply

Marsh Posté le 10-12-2007 à 15:23:12    


 

Code :
  1. select *
  2. from
  3. (SELECT a.*,
  4.            case id
  5.                when 195 then 1
  6.                when 200 then 10
  7.                when 202 then 20
  8.                when 174 then 30
  9.                when 172 then 40
  10.            end as cle_de_tri
  11. FROM `ciel_agr` a
  12. WHERE id IN ( 195, 200, 202, 174, 172 ) )
  13. order by cle_de_tri

Reply

Marsh Posté le 10-12-2007 à 16:15:40    

Ouch cette requête semble un peu barbare à construire à partir d'une autre en php, je préfère me cacher :) Merci pour la soluce


---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 11-12-2007 à 17:47:48    

casimimir a écrit :


 

Code :
  1. select *
  2. from
  3. (SELECT a.*,
  4.            case id
  5.                when 195 then 1
  6.                when 200 then 10
  7.                when 202 then 20
  8.                when 174 then 30
  9.                when 172 then 40
  10.            end as cle_de_tri
  11. FROM `ciel_agr` a
  12. WHERE id IN ( 195, 200, 202, 174, 172 ) )
  13. order by cle_de_tri



 
mysql supporte pas les case dans le order by ?
parceque moi je verrais plutôt ça :

Code :
  1. SELECT *
  2. FROM ciel_agr
  3. WHERE id IN ( 195, 200, 202, 174, 172 )
  4. ORDER BY            case id
  5.               when 195 then 1
  6.               when 200 then 2
  7.               when 202 then 3
  8.               when 174 then 4
  9.               when 172 then 5
  10.           end

Reply

Marsh Posté le 12-12-2007 à 14:57:18    

oops ^^

Reply

Marsh Posté le 12-12-2007 à 15:39:27    

Contre toutes prévisions, ça marche et cela accèlere le temps de traitement des infos ..

 

Par contre générer le :

Code :
  1. SELECT id,Reste,Terrain FROM ciel_agr WHERE id IN (382,378,170,295,305,313,308,307,314,303) AND Reste>0 ORDER BY case id when 382 then 1 when 378 then 2 when 170 then 3 when 295 then 4 when 305 then 5 when 313 then 6 when 308 then 7 when 307 then 8 when 314 then 9 when 303 then 10  end


( ce qui correspond à regarder dans cet ordre des enregistrement s'il reste une place disponible pour telle affectation, une pure jouissance !
That's so Funky !!!


Message édité par grosbin le 12-12-2007 à 15:40:55

---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed