|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 7 ![]() |
Bonsoir,
Je bloque sur une requête. Tout d'abord, voila en Français ce que je veux faire : faire la moyenne de tous les nombres entre 2 dates lorsque le mois = 01 (par exemple et par extension, mois = 02 ....) la date dans ma table est de la forme : YYYYMMDD (20110222) Voila ce qui marche mais c'est pour toute ma table : Code :
$sql = 'SELECT AVG(NB) as moyTN From x WHERE month(date) = '".$mois."'; Code :
SELECT AVG(TN) AS moyTN FROM x WHERE (date BETWEEN $date1 AND $date2 AND month(date) = '".$mois."' ) Code :
SELECT AVG(TN) AS moyTN FROM x WHERE month(date) = '".$mois."' IN (SELECT TN FROM x WHERE (date BETWEEN $date1 AND $date2)) Voila, je sèche merci de votre aide |
|
|
00
|
|
|
#2 | |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
Citation:
Les dates mysql sont au format YYYY-MM-DD. |
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 7 ![]() |
effectivement,
mais je ne peux pas changer le format de mon champ. si j'ai bien compris, ce qui ne marche pas c'est donc ça month(date) puisque date n'est pas un champ date !! comment je pourrais contourner le problème ? Merci |
|
|
00
|
|
|
#4 | |
|
Membre Expert
![]() Inscription : septembre 2010 Messages : 1 239 ![]() |
Citation:
Sinon tu peux toujours utiliser SUBSTRING pour récupérer le mois dans ta date mais la requête ne sera pas optimisée (par rapport à l'utilisation du champ date au bon format) : Code :
$sql = 'SELECT AVG(NB) as moyTN From x WHERE SUBSTRING(date,5,2) = '".$mois."';
__________________
- Réalisations - Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical. |
|
|
|
10
|
|
|
#5 | |
|
Membre expérimenté
![]() |
Bonjour ;
Citation:
|
|
|
|
10
|
|
|
#6 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 7 ![]() |
merci à vous deux.
Avec la fonction SUBSTRING ça fonctionne parfaitement même si ce n'est pas optimisé comme vous le dites. Je vais garder pour l'instant cette solution qui me convient. Merci encore |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Inscription : septembre 2010 Messages : 1 239 ![]() |
Juste pour terminer tu ne devrais pas nommé ton champ date "date" car c'est un mot réservé. Cela fonctionne avec mysql mais tu auras des pb si tu dois utiliser plus tard d'autres SGBD.
__________________
- Réalisations - Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical. |
|
|
10
|
|
|
#8 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 7 ![]() |
tu as sans doute raison mais j'ai tendance à me perdre avec les variables donc c'est plus par facilité qu'optimisation et cohérence !!
Au fait, j'ai finalement encore un petit soucis lorsque je fais je veux en même temps, trouver la date ou la valeur max a été atteinte mais je n'ai pas réussi à le faire dans la même requete, c'est à dire que je fais une deuxième requete Code :
SELECT date from $table where TX = maxTX
|
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Inscription : septembre 2010 Messages : 1 239 ![]() |
J'ai du mal à comprendre. Tu peux en dire un peu plus, notamment sur ta première requête ?
__________________
- Réalisations - Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical. |
|
|
00
|
|
|
#10 | |
|
Invité de passage
![]() Inscription : février 2011 Messages : 7 ![]() |
Citation:
Code :
SELECT MAX(TX) as maxTX FROM $table where date BETWEEN $date1 AND $date2 AND SUBSTRING(date,5,2) = '".$_GET['mois']."' donc je fais une 2ème requete pour avoir la date mais je suppose que l'on peut sélectionner MAX(TX) et date dans la même requête. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com