SQL内连接创建重复项

时间:2013-09-05 19:44:40

标签: sql inner-join

我有三个表,供应商,产品和交付。我想在交货表中显示供应商名称和数量。有5个不同的供应商,有12个交付。我希望连接表应包含12行,其中包含名称和交付。

这是我的代码。

SELECT  Suppliers.SNAME, Deliveries.QTY
FROM Suppliers, Deliveries
INNER JOIN  Products
ON Deliveries.P=Products.Penter (typo, should be Products.P)

输出是60行,有许多重复和一些不正确的匹配。

表: Suppliers Products Deliveries

2 个答案:

答案 0 :(得分:5)

取消已弃用的隐式联接,并指定JOIN条件,不确定您的表格结构,例如:

SELECT  s.SNAME, d.QTY
FROM Deliveries d
INNER JOIN Suppliers s
 ON d.s = s.s
INNER JOIN  Products p
 ON d.p = p.p

未指定的隐式JOIN即:

SELECT  Suppliers.SNAME, Deliveries.QTY
FROM Suppliers, Deliveries

将导致每个表中的每条记录加入到另一个表中的每个记录,在您的情况下,5条记录和12条记录= 60种组合。

答案 1 :(得分:2)

始终使用正确的连接语法。您正在使用适当的ANSI ,语法混合旧式连接(wherejoin子句中的条件)。

你的意思是这样的:

SELECT s.SNAME, d.QTY
FROM Suppliers s join
     Deliveries d
     d.SupplierId = s.SupplierId join
     Products p
     ON d.P = Products.Penter;

我正在组建SuppliersDeliveries之间的联接字段。而且,我只是猜测那些是需要连接的表(可能是SuppiersProducts)。