J'ai un problème avec une déclaration MySQL:MySQL: liste de somme pour plusieurs conditions dans une instruction SQL
select sum(x) as "sum", "01.06.2010" as "date" from (
select distinct a.id as ID, a.dur as x from b_c
inner join c on b_c.c_id = c.id
inner join a on c.id = a.c_id
inner join a_au on a.id = a_aud.id
inner join d on a_au.rev = d.rev
where
b_c.b_id = 30 and
a_au.stat != 1 and
DATE(FROM_UNIXTIME(rtime)) = DATE('2010-06-01')
) AS SubSelectTable;
Cette instruction renvoie une ligne avec la colums « somme » et « date ».
Maintenant, j'ai non seulement une date ('2010-06-01'), j'ai beaucoup de dates que je dois obtenir la somme(), mais pas dans une seule rangée. Je veux avoir par jour une ligne de résultat.
Ainsi, par exemple, la déclaration ci-dessus me retourne
sum date
-------------------
20 01.06.2010
Maintenant, j'ai les dates 2010-06-01, 2010-06-02, 2010-06-03, ... Ce que je peut faire est d'écrire pour chaque date une déclaration SQL qui change la date. Donc, si j'ai 10 dates, j'aurai 10 déclarations SQL pour la base de données. Mais je le voulais avec une instruction SQL, et le résultat ne devrait pas être la somme de toutes les dates données, je veux avoir une ligne résultat par date. Donc le résultat devrait être comme ça:
sum date
-------------------
20 01.06.2010
133 02.06.2010
19 03.06.2010
88 04.06.2010
... ...
Comment est-ce que je peux faire ceci? Est-ce que quelqu'un sait?
Merci beaucoup à l'avance & Cordialement.
Merci beaucoup, cela semble être d'accord, mais comment puis-je dire à la déclaration que je veux avoir uniquement les lignes de résultats entre deux dates données? J'ai ajouté un "... où ... et date entre '2010-07-01' et '2010-07-10'" mais il ne connaît pas la colonne de date. Comment puis-je faire cela? – Tim
ah, bien sûr, je pouvais le faire: "... où ... et DATE (FROM_UNIXTIME (rtime)) entre '2010-07-01' et '2010-07-10'" mais je pense que la performance est pas si bon, car il doit calculer l'horodatage à une date deux fois. – Tim
résolu: groupe par date ayant une date entre '2010-07-01' et '2010-07-10'; – Tim