我目前正在尝试查询psql数据库。查询中涉及三个表,其结构如下所示
产品表
Productid Name Quantity DateCreated
样本表
Sampleid Name DateReceived Productid Descriptionid
描述表
Descriptionid Description
所以当我使用下面的查询时
Select p.Name,p.Quantity,s.DateReceived,d.Description
from public.Product p
left join Sample s on s.Productid = p.Productid
left join Description d on s.Descriptionid = d.Descriptionid
这将返回数据,但其中包含许多重复数据。
Project Name Quantity DateReceived Description
13CD 1.00 7/12/2013 0:00 ABCD
13CD 1.00 7/12/2013 0:00 ABCD
13CD 1.00 7/12/2013 0:00 ABCD
13CD 1.00 7/12/2013 0:00 ABCD
13FML 4.00 8/7/2013 0:00 EFGH
13FML 4.00 8/7/2013 0:00 EFGH
13CD 4.00 7/12/2013 0:00 IJKL
13CD 4.00 7/12/2013 0:00 IJKL
我是新手加入,不确定是否需要更改联接
答案 0 :(得分:1)
您可以使用
GROUP BY d.Descriptionid
或实际订单的其他一些唯一标识符,而不是产品,您应该收到您正在寻找的内容
答案 1 :(得分:0)
看起来您正在获取所有交易,因此存在多行,因为类似的交易
为
的影响做些什么Select p.Name,sum(p.Quantity) as Quantity,s.DateReceived,d.Description
from public.Product p
left join Sample s on s.Productid = p.Productid
left join Description d on s.Descriptionid = d.Descriptionid
group by
p.Name,s.DateReceived,d.Description
应显示您要查找的内容,数量将是交易次数
或者如果您只是寻找行中的信息而且计数不是必需的,只需要做
select distinct ...
应该为你做的伎俩
答案 2 :(得分:0)
您Product
和Sample
个表具有名为Name
的重复属性,需要重命名一个(您的意思是ProductName
而不是ProjectName
?)。您的预期结果(无空值)表明您实际上不需要外连接:
SELECT DISTINCT ProjectName, Quantity, DateReceived, Description
FROM Sample
NATURAL JOIN
Description
NATURAL JOIN
( SELECT Name AS ProjectName, Productid, Quantity
FROM Product ) t;