我在标识列上有4个MySQL表在所有这些表之间是共同的, 表格顺序: 1-项目。 2-销售。 3- Puchases。 4-回归。
ItemID出现在所有这些表中,当我使用LEFT JOIN时,我得到重复的内容,如:
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我得到的结果对于销售来说总是唯一的,但对于其他表来说是重复的。
感谢您的回答。
答案 0 :(得分:0)
如果我了解您正在尝试正确执行的操作,则需要从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
答案 1 :(得分:0)
我并不真正使用MySQL,但在SQL Server中,您可以使用distinct
指令,因此重复的行只显示为一行。请注意,所有返回的列必须完全相同。
Select Distinct a.ItemID AS ItemID,... From....
希望这有帮助