我有三个表,供应商,产品和交付。我想在交货表中显示供应商名称和数量。有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行,有许多重复和一些不正确的匹配。
表:
答案 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 ,
语法混合旧式连接(where
与join
子句中的条件)。
你的意思是这样的:
SELECT s.SNAME, d.QTY
FROM Suppliers s join
Deliveries d
d.SupplierId = s.SupplierId join
Products p
ON d.P = Products.Penter;
我正在组建Suppliers
和Deliveries
之间的联接字段。而且,我只是猜测那些是需要连接的表(可能是Suppiers
和Products
)。