我正在运行一个查询,我得到重复的行。我不明白这是为什么。这是我的查询:重复行SQL查询
SELECT c.FName,
p.ProductName,
s.Description,
s.Quantity,
s.Price
FROM customers c,
products p,
sellers s,
requests r
WHERE c.ID = s.CID
AND p.ProductID = s.ProductID
AND r.ProductID = s.ProductID
AND r.C_ID = 3
AND r.MatchType = 'Price'
ORDER BY s.Price ASC
======= =======编辑
好这里的编辑什么的请求表看起来像值。注:CID 2 = DAZ(通常为卖家),3 =保罗(一般为购买人),5 = compny1(通常为卖家) 注:产品ID 1 =苹果,产品ID 2 =梨,产品3 =浆果, ID4 =橙
请求表看起来是这样的选择记录后使用MatchType =价格和卡斯特ID = 3:
requestid | cid | productid | Quantity | Price | matchtype
------------------------------------------------------------------
1 3 1 3.0 2.00 price
3 3 4 4.0 2.50 price
4 3 3 2.5 2.00 exact
5 3 2 3.0 3.50 exact
6 3 3 3.0 2.00 exact
7 3 1 10.0 7.00 price
,这里是卖家表
promotionID | cid | productid | Quantity | Price | description
------------------------------------------------------------------
1 2 4 5.0 2.99 oranges
2 2 3 1.5 1.00 hand strawberries
3 2 3 2.5 2.00 l stawberries
4 2 2 3.0 3.00 pear
5 5 1 5.0 5.00 royal apples fm appleco.
6 2 1 6.0 5.50 sweet apples
运行后查询我我曾试过两个建议的连接和这个问题中的一个我一直在等待HIS作为输出
FName ProductName Description Quantity Price
daz Oranges Fresh and sweet oranges. 5.0 2.99
compny1 Apple royal apples fm appleco. 5.0 5.00
compny1 Apple royal apples fm appleco. 5.0 5.00
daz Apple sweet apples 6.0 5.50
daz Apple sweet apples 6.0 5.50
我不明白为什么我recieving被重复行。请求的产品ID必须=卖家产品id以匹配请求的产品到可用产品,并且在这种情况下选择的customerId是3 ...
我不明白为什么最后4条记录会重复它们自我吗?为什么这可能是?
从技术上讲只应显示4条记录。即行上的记录.. 1,2和3
建议/观察 OKay,看了这个......你认为行重复,因为productID1 = apple已被同一个客户请求两次不同的数量?
requestid | cid | productid | Quantity | Price | matchtype
------------------------------------------------------------------
1 3 1 3.0 2.00 price
7 3 1 10.0 7.00 price
也许这些产品在'requests'中有多个匹配项。 – 2013-02-17 22:27:19
当您进行连接时,每个连接对都会显示出来,所以如果您加入了一个带有一个条目的表,并且该表的外部键有10行,那么答案将会有10行。 – 2013-02-17 22:37:32
@MartinSmith 以及与客户ID 3请求表给出了以下请求:它们是由用户3请求的产品 巧克力,2公斤,2.00 choclate,10公斤,8.00 甜食,3千克,3.00 ....有两个供应商销售巧克力和甜食...... 1个供应商即compny1只销售一种产品choclate ..另一个供应商daz销售这两种产品。我只是不明白为什么最后4行重复他们自我? – johnny 2013-02-17 22:45:34