2010-12-23 30 views
0

我有一個銷售模型,與salesitems相關的模型中,銷售模型有一些修飾符,即折扣。在cakephp/mysql中獲取每天的銷售額

要獲得總銷售額,我已經做到了這一點:

var $virtualFields = array(
    'total' => '@vad:=(SELECT COALESCE(SUM(price*quantity), 0) FROM saleitems WHERE saleitems.sale_id = Sale.id)', 
    'paid' => '@pad:=(SELECT COALESCE(SUM(amount), 0) FROM payments WHERE payments.sale_id = Sale.id)', 
    'discountamount' => '@dis:=(SELECT COALESCE(SUM(price*quantity), 0) FROM saleitems WHERE saleitems.sale_id = Sale.id)*(0.01 * Sale.discount)', 
    'saleamount' => '@vad - @dis', 
); 

所有似乎運作良好。但是,當我來做一些報道,並試圖獲得每天的總銷售額時,我已經跑到了腦力的極限。有人能指出我以正確的方式做到這一點嗎?我應該把他們在PHP?或運行查詢?或者有沒有辦法與蛋糕的ORM做到這一點?

我試着查詢方法,

SELECT 
created, 
(@vad:=(SELECT COALESCE(SUM(price*quantity), 0) FROM saleitems WHERE `saleitems`.`sale_id` = `Sale`.`id`)) AS `Sale__total`, 
(@pad:=(SELECT COALESCE(SUM(amount), 0) FROM payments WHERE `payments`.`sale_id` = `Sale`.`id`)) AS `Sale__paid`, 
(@dis:=(SELECT COALESCE(SUM(price*quantity), 0) FROM saleitems WHERE `saleitems`.`sale_id` = `Sale`.`id`)*(0.01 * `Sale`.`discount`)) AS `Sale__discountamount`, 
sum(@vad - @dis) AS `Sale__saleamount` 
FROM `sales` AS `Sale` WHERE `Sale`.`account_id` = 37 GROUP BY DAY(`Sale`.`created`) order by created 

但是,這是給我完全不正確的答案:(

感謝任何指導

回答

1

您可以運行此查詢:

SELECT SUM((si.price * si.quantity) * (1 - (0.01 * s.discount))) AS SalesByDay 
FROM sales s JOIN saleitems si ON s.id = si.sale_id 
WHERE s.account_id = 37 
GROUP BY DATE(s.created) 

注:

  • DAY功能,returnes月份的一天,沒有日期
  • 我沒有加入支付表,因爲我沒有看到你使用@pad變量
相關問題