Xpoint
   [напомнить пароль]

продажи по магазинам

Метки: [без меток]
2009-04-14 01:21:56 [обр] axl72[досье]

К примеру есть таблица sales с полями:
id - номер продажи(автоинкремент),
s_time - дата-время продажи,
magazin - id магазина,
amount - сумма продажи.

как можно сформулировать запрос, что бы получить нечто подобное
дата, к-во_продаж_маг1, сумма_продаж_маг1, к-во_продаж_маг2, сумма_продаж_маг2, к-во_продаж_маг3, сумма_продаж_маг3...

(использую mysql)
Заранее спасибо!

спустя 6 часов [обр] Евгений Седов aka KPbIC(0/187)[досье]
спустя 48 минут [обр] axl72[досье]

не совсем понимаю, каким образом group by мне поможет получить результат с такими столбцами

дата, к-во_продаж_маг1, сумма_продаж_маг1, к-во_продаж_маг2, сумма_продаж_маг2, к-во_продаж_маг3, сумма_продаж_маг3

максимум до чего я додумался:
select date_format(s_time, "%Y-%m-%d") as dt ,
  magazin,
  count(id),
  sum(amount)
from sales
where s_time between "2009-04-01" and "2009-04-30"
group by dt,magazin
order by dt,magazin

но после этого полученный результат нужно основательно разгребать скриптом, а хотелось бы получить максимально готовый результат

спустя 57 минут [обр] Евгений Седов aka KPbIC(0/187)[досье]
Насколько мне известно, перекрестные запросы в MySQL невозможны.
спустя 8 минут [обр] Thirteensmay(0/157)[досье]
Мягко говоря не лучший вариант, но если очень хочется...
select s.s_time,
(select count(*)
 from sale s1
 where s1.s_time = s.s_time
 and s1.magazin = 1) as kolvo1,
(select sum(s1.amt)
 from sale s1
 where s1.s_time = s.s_time
 and s1.magazin = 1) as sum1,
(select count(*)
 from sale s2
 where s2.s_time = s.s_time
 and s2.magazin = 2) as kolvo2
... 
from sale s
group by s.s_time
спустя 1 час 2 минуты [обр] axl72[досье]
Thirteensmay[досье] , кажется понял Вашу мысль, спасибо, буду пробовать
спустя 40 минут [обр] Евгений Седов aka KPbIC(0/187)[досье]

Thirteensmay[досье]
Ходы кривые роет
подземный умный крот (с)

axl72[досье], когда будете пробовать, заодно обратите внимание и на EXPLAIN

Powered by POEM™ Engine Copyright © 2002-2005