使用一个关系ID连接多个MySQL表

时间:2015-09-23 22:40:35

标签: mysql duplicates

我在标识列上有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我得到的结果对于销售来说总是唯一的,但对于其他表来说是重复的。

感谢您的回答。

2 个答案:

答案 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....

希望这有帮助