Php 如何在一个查询中组合3个表
我需要在一个查询中组合3个元素,以便在图形表中表示它 第一个查询是查找NetAmount2017 第二个查询是查找2017年预算 第三个查询是查找NetAmount2016 第一个查询:NetAmount2017Php 如何在一个查询中组合3个表,php,mysql,Php,Mysql,我需要在一个查询中组合3个元素,以便在图形表中表示它 第一个查询是查找NetAmount2017 第二个查询是查找2017年预算 第三个查询是查找NetAmount2016 第一个查询:NetAmount2017 SELECT sum(a.netamt) as netamt2017, b.store_name FROM site_sales a JOIN site_store b ON b.storenum = a.storenum WHERE a.busidate >= '2017-
SELECT sum(a.netamt) as netamt2017, b.store_name
FROM site_sales a JOIN site_store b ON b.storenum = a.storenum
WHERE a.busidate >= '2017-01-01' AND a.busidate <='2017-04-30'
GROUP BY a.storenum
第三次查询:NetAmount2016与第一次查询相同,但日期不同
SELECT sum(a.netamt) as netamt2017, b.store_name
FROM site_sales a JOIN site_store b ON b.storenum = a.storenum
WHERE a.busidate >= '2016-01-01' AND a.busidate <='2016-04-30'
GROUP BY a.storenum
如果我这样做下面的查询,如果给我错误的计算
SELECT
SUM(CASE WHEN a.busidate BETWEEN '2016-01-01' AND '2016-04-30' THEN a.netamt
ELSE 0 END) as netamt2016,
SUM(CASE WHEN a.busidate BETWEEN '2017-01-01' AND '2017-04-30' THEN a.netamt ELSE 0
END) as netamt,
b.store_name,
c.budget
FROM site_sales a JOIN site_store b ON b.storenum = a.storenum
JOIN site_kpimthslsbgt c ON b.storenum = c.storenum
WHERE c.busidate BETWEEN '2017-01' AND '2017-04' AND b.store_region='$store_region'
GROUP BY a.storenum
感谢上帝!我找到了答案,将我所有的查询合并成一个查询。 代码如下:
SELECT x.netamt2017,z.netamt2016, y.budget, y.store_name
FROM
(
SELECT sum(a.netamt) as netamt2017, b.store_name
FROM site_sales a JOIN site_store b ON b.storenum = a.storenum
WHERE a.busidate >= '$date1' AND a.busidate <='$date2' AND
a.storenum='$storenum'
GROUP BY a.storenum
) x
inner join
(
SELECT
SUM(CASE WHEN c.busidate BETWEEN '$date111' AND '$date211' THEN c.budget
ELSE 0 END) as budget,
b.store_name
FROM site_kpimthslsbgt c JOIN site_store b ON b.storenum = c.storenum
WHERE c.storenum='$storenum'
GROUP BY c.storenum
) y
on x.store_name = y.store_name
INNER JOIN
(
SELECT sum(a.netamt) as netamt2016, b.store_name
FROM site_sales a JOIN site_store b ON b.storenum = a.storenum
WHERE a.busidate >= '$date1234' AND a.busidate <='$date2234' AND
a.storenum='$storenum'
GROUP BY a.storenum
) z
on y.store_name = z.store_name
你能发布你的表格结构吗?你试过union吗?永远不要尝试,也不知道如何使用它
SELECT
SUM(CASE WHEN a.busidate BETWEEN '2016-01-01' AND '2016-04-30' THEN a.netamt
ELSE 0 END) as netamt2016,
SUM(CASE WHEN a.busidate BETWEEN '2017-01-01' AND '2017-04-30' THEN a.netamt ELSE 0
END) as netamt,
b.store_name,
c.budget
FROM site_sales a JOIN site_store b ON b.storenum = a.storenum
JOIN site_kpimthslsbgt c ON b.storenum = c.storenum
WHERE c.busidate = '2017-01' AND b.store_region='$store_region'
GROUP BY a.storenum
SELECT
SUM(CASE WHEN a.busidate BETWEEN '2016-01-01' AND '2016-04-30' THEN a.netamt
ELSE 0 END) as netamt2016,
SUM(CASE WHEN a.busidate BETWEEN '2017-01-01' AND '2017-04-30' THEN a.netamt ELSE 0
END) as netamt,
b.store_name,
c.budget
FROM site_sales a JOIN site_store b ON b.storenum = a.storenum
JOIN site_kpimthslsbgt c ON b.storenum = c.storenum
WHERE c.busidate BETWEEN '2017-01' AND '2017-04' AND b.store_region='$store_region'
GROUP BY a.storenum
SELECT x.netamt2017,z.netamt2016, y.budget, y.store_name
FROM
(
SELECT sum(a.netamt) as netamt2017, b.store_name
FROM site_sales a JOIN site_store b ON b.storenum = a.storenum
WHERE a.busidate >= '$date1' AND a.busidate <='$date2' AND
a.storenum='$storenum'
GROUP BY a.storenum
) x
inner join
(
SELECT
SUM(CASE WHEN c.busidate BETWEEN '$date111' AND '$date211' THEN c.budget
ELSE 0 END) as budget,
b.store_name
FROM site_kpimthslsbgt c JOIN site_store b ON b.storenum = c.storenum
WHERE c.storenum='$storenum'
GROUP BY c.storenum
) y
on x.store_name = y.store_name
INNER JOIN
(
SELECT sum(a.netamt) as netamt2016, b.store_name
FROM site_sales a JOIN site_store b ON b.storenum = a.storenum
WHERE a.busidate >= '$date1234' AND a.busidate <='$date2234' AND
a.storenum='$storenum'
GROUP BY a.storenum
) z
on y.store_name = z.store_name