[英]Joining multiple MySQL Tables with one relations ID
我在所有这些表之间有4个MySQL表,它们在Identity列上是相同的,Sequences中的表为1- Items。 2-销售。 3-Puchases。 4-返回。
当我使用LEFT JOIN时,ItemID会出现在所有这些表中,例如:
select
a.ItemID AS ItemID,
a.Item_title AS ItemTitle,
SUM(b.qty) AS SoldQty,
SUM(c.qty) AS PurQty,
SUM(d.qty) AS RetQty
from items a
left join sales b on a.ItemID = b.items_ItemID
left join purchases c on a.ItemID = c.items_itemID
left join returned d on a.ItemID = d.items_ItemID
group by a.ItemID
该查询是我尝试过的众多尝试之一:D我得到的结果对于销售而言始终是唯一的,而对于其他表则是重复的..
感谢您的回答。
如果我了解您要正确执行的操作,则需要从a获得的每个项目ID的销售,购买,退货等总数。 如果是这种情况,请尝试先考虑一个更简单的问题:如何获得每个销售数量的总和(按物料ID分组)?
为此,您需要执行以下操作:
select b.items_ItemID, sum(b.qty) as total_sales_qty
from sales b group by b.items_ItemID
您可以对表c和d做同样的事情。
获得这些内容后,您可以像这样将它们一起加入:
select a.ItemID, bb.total_sales_qty, cc.total_purchases_qty, dd.total_returned_qty
from items a
left join (
select b.items_ItemID, sum(b.qty) as total_sales_qty
from sales b group by b.items_ItemID) bb
on a.ItemID = bb.items_ItemID
left join (
select c... etc) cc
on a.ItemID = cc.items_ItemID
... etc
我并没有真正使用MySQL,但是在SQL Server中,您可以使用distinct
指令,因此重复的行仅显示为一行。 请注意,所有返回的列必须相同。
Select Distinct a.ItemID AS ItemID,... From....
希望这可以帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.