Avis aux expert en SQL : DATE + X

Avis aux expert en SQL : DATE + X - SQL/NoSQL - Programmation

Marsh Posté le 18-06-2009 à 15:15:21    

Bonjour,
 
Je travaille avec mysql server.
 
Je souhaite avoir des résultats (px_commande) sur les six mois à venir et ce, n'importe quand.
 
Mon code bloque au passage des années.  
 
Au 01-01-2010 : Il me remonte toutes les px_commandes de tous les mois de janvier des années précédentes !
 

Code :
  1. Case EXTRACT(MONTH FROM Dt_livr_demande)
  2.                     WHEN month(date_add((current_date),interval 7 month))
  3.                     THEN px_commande
  4.                 else "" END FROM tbl_ligneachat


 
si jamais vous avez été confronté à ce problème ... je suis preneur

Reply

Marsh Posté le 18-06-2009 à 15:15:21   

Reply

Marsh Posté le 18-06-2009 à 15:22:24    

extract month ne ramène qu'un nombre entre 1 et 12, on perd la notion d'année
 
tu devrais faire un truc genre (j'y connais rien en mysql je me base sur ton code):
 

Code :
  1. case when dt_livr_demande BETWEEN current_date AND (date_add((current_date),interval 7 month)) then px_commande
  2. else NULL
  3. end

Reply

Marsh Posté le 18-06-2009 à 15:32:27    

Yes ! Excellent !
 
Merci beaucoup Casimir.  
 
Tant qu'on y est, t'aurais pas une idée pour mon post précédent ?
Sur la méga requête ?
 
Le but est de fusionner des lignes qui ont un même identifiant (n° de commande)  en additionnant une colonne (le prix) .

Reply

Marsh Posté le 18-06-2009 à 16:00:57    

sans avoir de jeu de donnée similaire et sans les connaitre il y en a pour plusieurs heures a décortiquer donc non.
 
si ton probleme est : "Le problème vient que ma requête ne me renvoie pas toutes les lignes." mon conseil serait de reconstruire ta requete en ajoutant les joins 1 par 1 et de voir quel est le join qui te sucre tes lignes.
et juste parceque je viens de rezieuter ta requete: ne mélange pas les joins ansi et ceux dans le where, a tous les coups c'est la que tu te plantes, ne fais que des ansi

Reply

Marsh Posté le 18-06-2009 à 16:02:20    

PFFFFFFFFFFFF !!!!!!!
 
Non, je démissionne là !
Cela ne fonctionne pas ce code !!!
Cela ne prend pas les mois entier du 1 au 31 mais à partir de la date du jour !
Par ex : 18 juin au 18 juillet.  
 
C'est pour cette raison que je cherchais à extraire les mois seuls des dates !
 

Reply

Marsh Posté le 18-06-2009 à 16:26:46    

allodren a écrit :

PFFFFFFFFFFFF !!!!!!!
 
Non, je démissionne là !
Cela ne fonctionne pas ce code !!!
Cela ne prend pas les mois entier du 1 au 31 mais à partir de la date du jour !
Par ex : 18 juin au 18 juillet.  
 
C'est pour cette raison que je cherchais à extraire les mois seuls des dates !
 


 
c'est effectivement un peu ce que le code dit qu'il fait, trouve la fonction en mysql qui tronque une date au 1er du mois
 

Reply

Marsh Posté le 18-06-2009 à 16:34:02    

Reply

Marsh Posté le 19-06-2009 à 11:32:13    

Ok normalement, cela marche avec cela :
 

Code :
  1. SELECT case when dt_livr_demande between (date_add(date_add(last_day(current_date), interval 1 day),interval 6 month)) AND (date_add(last_day(current_date),interval 7 month))
  2. then qt_cmde_ini
  3. else NULL
  4. end  FROM tbl_ligneachat A


 
Mon code est OK pour 2010.
 
Merci tous

Reply

Sujets relatifs:

Leave a Replay

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