order by sur deux champs date?

order by sur deux champs date? - SQL/NoSQL - Programmation

Marsh Posté le 23-09-2005 à 14:52:51    

Bonjour,  
 
comment faire un order by sur deux champ de date sur une meme table?  
 
j'ai par exemple date1 date2 date3 dans un champ1  
et  
j'ai par exemple date4 date5 dans un champ2  
 
je voudrait trier mes dates dans l'ordre decroissant donc  
ORDER BY... DESC  
 
pour avoir au final  
date1  
date4  
date2  
date3  
date5  
 
comment faire?  
 
merci

Reply

Marsh Posté le 23-09-2005 à 14:52:51   

Reply

Marsh Posté le 23-09-2005 à 14:56:46    

si ta base de données étant construite convenablement ça ne poserait pas de problème.
or ici, avoir trois dates dans un même champ, c'est vraiment n'importe quoi.  
Un champ = une date par exemple
 
une bonne analyse ne s'improvise pas

Reply

Marsh Posté le 23-09-2005 à 14:58:17    

Tu as une seule date dans une des deux col ou tu peux avoir une date dans chaque col à la fois?
 
Quel SGBD?


Message édité par thecoin le 23-09-2005 à 15:00:36
Reply

Marsh Posté le 23-09-2005 à 15:02:42    

j'ai une date dans une des deux colonnes, et j'utilise mysql
 
je me suis peut etre mal exprimé champ = colonne


Message édité par rdams le 23-09-2005 à 15:03:43
Reply

Marsh Posté le 23-09-2005 à 15:35:58    

je pense que c'est possible en passant par une table temporaire mais je ne me souvient plus de la syntaxe
 
1ere requete

Code :
  1. select champ1 as date, champx, champy into tmp from ma_table where ...


 
2eme requete

Code :
  1. select champ2 as date, champx, champy into tmp from ma_table where ...


 
requete sur table tmp

Code :
  1. select date, champx, champy from tmp order by date


 
j'ai essayé ceci mais ça n'a pas l'air de fonctionner

Reply

Marsh Posté le 23-09-2005 à 20:02:44    

J'ai pas testé sur mysql (j'ai oublié mon pass root ^^)
 
Alors j'ai vite testé sur sql server.
 
En fait c'est un simple union de 2 requêtes, la première avec la première colonne de la table, et la deuxième avec la seconde colonne.
Et le order by 1 veut dire trier la colonne une.
 

Code :
  1. select date1 from test
  2. union
  3. select date2 from test
  4. order by 1 desc


 
 
Sur sql serveur on peut aussi trier la table en donnant un alias comme ceci.
 

Code :
  1. select date1 as 'MaColonne' from test
  2. union
  3. select date2 as 'MaColonne' from test
  4. order by 'MaColonne' desc


 
Merci pour le feedback sur les possibilités de Mysql.

Reply

Marsh Posté le 23-09-2005 à 20:18:35    

( J'ai récupéré mon password mysql )
 
Euh les 2 codes marchent très bien sur ma version Mysql version 4.*

Reply

Marsh Posté le 26-09-2005 à 09:52:02    

ok merci ça marche.
 
est ce qu'il est possible de faire le tri de date sur des dates de type  
yyyy-mm-aa et yyyy-mm-aa 00:00 ?

Reply

Marsh Posté le 26-09-2005 à 10:53:35    

Pour le tri sur les dates, j'ai trouvé, je prend

Code :
  1. LEFT(DATE_DEB,10) AS DATE

pour eliminer 00:00.
 
Encore merci

Reply

Sujets relatifs:

Leave a Replay

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