当我进入这个查询,SQL为什么返回太多结果?
SELECT OrderDetails.OrderDetailID, Customers.CustomerName
FROM OrderDetails, Customers
NATURAL JOIN Products
NATURAL JOIN Customers
WHERE SupplierID = 5;
1001返回的记录。
当我进入这个查询,
SELECT OrderDetailID
FROM OrderDetails
NATURAL JOIN Products
WHERE SupplierID = 5;
共有11条记录返回
正如你所期望的有91条记录Customer表和11所导致第二个查询返回和91 * 11 = 1001。然而,我不知道如何摆脱这一点,并防止在第一个查询中返回重复的结果。
架构的连接:http://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all
,我会在远离自然连接,他们为您节省打字没有真正的利益和用少量从长远来看,很多不可预测性(例如,稍后,在项目发展之后,“标准化”时间戳会被添加到表格中;现在您以前的工作NATURAL NATURAL只会返回具有相同时间戳的结果)。 – Uueerdo
^^是的,请张贴表结构,以便我们可以提供准确的答案,而不用猜测。但问题是由于使用了'FROM OrderDetails,Customers',其中您使用逗号语法创建了带有隐式内部联接的笛卡尔产品。 –
您包含的链接实际上并未显示架构。请编辑问题直接在这里添加“CREATE TABLE”语句。 –