表1
prodUID (*) plantID ItemName size qty
1 1 car med 5
2 1 car small 2
3 1 car large 8
4 1 truck small 7
5 1 truck med 0
6 1 truck large 4
7 1 van small 0
8 2 truck large 10
表2
UID(*) plantID table2_plan_tid table2_prodUID itemname size num wk
------------------------------------------------------------------------------
1 1 1 car med 3 41
2 1 2 car small 0 42
3 1 3 car large 6 41
4 1 4 truck small 1 44
5 1 5 truck med 10 45
6 1 6 truck large 1 43
7 1 7 van small 7 42
8 2 8 car med 10 41
表3
UID(*) plantid table3_wk table3_prodUID itemName size qty
------------------------------------------------------------------
1 1 41 2 car med 5
2 1 41 3 car large 7
3 1 43 7 van small 8
我想要的结果是
plantid = 1且在41到45之间
对于plantID上的table1总和数量
以及如何将其与连接或子查询链接以获取
plantid Itemname qty num order
------------------------------------
1 car 15 9 12
1 truck 11 12 0
1 van 0 7 8
我似乎无法获得正确的结果
我还考虑在所有表中放入itemNameID字段
如果这样会更容易
答案 0 :(得分:0)
您可以使用此查询实现所需目的:
SELECT table1.plantID, table1.ItemName, SUM(table1.qty), COALESCE(t2.num_sum, 0), COALESCE(t3.qty_sum, 0)
FROM table1
LEFT JOIN (SELECT plantid, itemname, SUM(num) AS num_sum
FROM table2
WHERE wk >= 41 AND wk <= 45
GROUP BY plantID, itemname) t2 ON table1.plantID = t2.plantID AND table1.ItemName = t2.ItemName
LEFT JOIN (SELECT plantid, itemname, SUM(qty) AS qty_sum
FROM table3
WHERE table3_wk >= 41 AND table3_wk <= 45
GROUP BY plantID, itemname) t3 ON table1.plantID = t3.plantID AND table1.ItemName = t3.ItemName
WHERE table1.plantid = 1
GROUP BY plantID, ItemName
基本上,您加入3个查询以获得所需内容。 如果您尊重某个和谐与列名称,那将会更加清晰。