вобщем после недолгих экзекуций получилось вот такое вот
работает, но меня теразают смутные сомнения по поводу его оптимальности
во-первых юнион, который вроде как отправляет индексы в известное место
во-вторых сложные конструкции с датами. можно ли как нибудь это оптимизировать?
CODE ( SQL):
скопировать код в буфер обмена
SELECT operationId , SUM( `price` ) `sum` , STR_TO_DATE( CONCAT( YEAR( DATE( `time` ) + INTERVAL 1 MONTH ) , "-", MONTH( DATE( `time` ) + INTERVAL 1 MONTH ) , "-", 01 ), "%Y-%m-%d") `date` FROM `payment_statistic` WHERE userId =1 AND operationId =2 AND STR_TO_DATE( CONCAT( YEAR( DATE( `time` ) + INTERVAL 1 MONTH ) , "-", MONTH( DATE( `time` ) + INTERVAL 1 MONTH),"-",01),"%Y-%m-%d") < NOW() GROUP BY YEAR(`time`), MONTH(`time`) UNION SELECT operationId `price` `sum` , DATE(`time`) `date` FROM `payment_statistic` WHERE userId = 1 AND operationId <> 2 ORDER BY `date`
для наглядности привожу результат
CODE ( htmlphp):
скопировать код в буфер обмена
1 800 2012-08-13 2 -220.64515686035156 2012-09-01 1 1200 2012-09-12 2 -321.2903251647949 2012-10-01 3 -120 2012-10-12
(Отредактировано автором: 13 Октября, 2012 - 13:33:12)
|