Mysql子查询问题

时间:2014-06-30 08:11:14

标签: mysql sql join subquery rdbms

这是我的mysql架构和查询。

http://sqlfiddle.com/#!2/73b0d/2

我想在每一行中加上(每天的memo.discount),日期,总和(每天的销售额(item.sell_price))。但似乎无法找到方法。我怎么能这样做?

预期结果。

total_discount    |      added_on        | total_sale
300               | 2014-06-25 00:00:00  | 1580
230               | 2014-06-26 00:00:00  | 980

提前致谢。

2 个答案:

答案 0 :(得分:1)

SELECT 
    SUM(m.discount) AS total_discount,
    m.added_on,
    sub0.total_sold AS total_sale
FROM memo m
LEFT OUTER JOIN
(
    SELECT DATE(memo.added_on) AS group_added_on, SUM(item.sell_price) AS total_sold 
    FROM memo 
    JOIN memo_item ON memo_item.memo_id = memo.id
    JOIN item ON item.id = memo_item.item_id
    WHERE memo.showroom_id = 2
    GROUP BY group_added_on
) sub0
ON group_added_on = DATE(m.added_on)
WHERE m.showroom_id = 2 and m.added_on BETWEEN '2014-06-25' AND '2014-06-26'
GROUP BY m.added_on

这是一个子查询,它获取您感兴趣的showroom_id的每一天的售价总和,然后将其加入备忘录表。

答案 1 :(得分:0)

这个怎么样?

select 
sum(m.discount) as total_discount,
m.added_on,
sum(item.sell_price) as total_sale
from memo m
join memo_item on memo_item.memo_id = m.id
join item on item.id = memo_item.item_id
where m.showroom_id = 2 and m.added_on between '2014-06-25' and '2014-06-26'
group by m.added_on

编辑:仅使用"备忘录"表...:

select
sum(discount) as total_discount,
added_on,
sum(subtotal_sale) as total_sale
from
(
select 
m.discount,
m.added_on,
sum(item.sell_price) as subtotal_sale
from memo m
join memo_item on memo_item.memo_id = m.id
join item on item.id = memo_item.item_id
where m.showroom_id = 2 and m.added_on between '2014-06-25' and '2014-06-26'
group by m.id
) h
group by added_on