我有三个表,供应商,产品和交货。我想从交货表中显示供应商名称和数量。有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行,其中包含许多重复项和一些不正确的匹配项。

表格:

最佳答案

终止已弃用的隐式联接,并指定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个组合。

关于sql - SQL内部联接创建重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18644640/

10-09 00:42