我有3张 table :
CREATE TABLE data (
id VARCHAR(30) NOT NULL PRIMARY KEY,
cat VARCHAR(30),
name VARCHAR(30)
) ENGINE=InnoDB;
CREATE TABLE sales_data (
id VARCHAR(30) NOT NULL,
sold date,
sale_s SMALLINT(5)
) ENGINE=InnoDB;
CREATE TABLE expenses (
id VARCHAR(30) NOT NULL,
date_exp date,
exp DECIMAL(5,3)
) ENGINE=InnoDB;
并且需要汇总到销售列的每月级别(在表sales_data上,以创建Month列 . 这很简单:
SELECT
B.id as "Product ID",
B.name as "Product Name",
B.cat as "Product Category",
MONTHNAME(A.sold) as "Month",
sum(A.sale_s) as "Sales per Month"
FROM sales_data A
JOIN data B
ON A.prod_id=B.prod_id
WHERE 1
GROUP BY 1,4
ORDER BY 1, A.sale_date ASC;
但现在,我需要使用media_expenditures表中的Product_ID和Month列将月度销售数据与月度媒体支出数据合并 .
我试图在子查询中求和:
SELECT *
FROM prod_data A
LEFT JOIN
(SELECT
id,
sold,
sum(sale_s)
FROM sales_data
group by id, MONTH(sold)
) AS B
ON A.id=B.id
RIGHT JOIN
(SELECT
id,
date_exp,
expenses --don't need to SUM since it's only 1 row per month
FROM expenses
) AS C
ON A.id=C.id
ORDER BY A.id, B.sold
我不工作,并且几个小时以来一直在尝试,差不多一天在办公室里 . 我需要它来SUM第一个JOIN,然后能够从media_expenditure表中获取该月的行 .
2 回答
您需要在第二个连接条件中包含月份 .
竿,
如果我理解正确,你希望在同一个选择中获得销售总额,那么我相信以下内容对您有所帮助 .