我应该考虑加入哪些团体?
With what groupings am I supposed to think about joins?
我在看例子
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
来自 W3School,我想知道我应该如何在脑海中对这些条款进行分组。据我了解,每个 SQL 查询 return 都是 table,并且查询中的子句本身可能 return 是 table。所以我想到了整个
Orders INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID
作为一个 table,我通过应用 SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
来 return 它的子 table。这是思考问题的正确方法吗?
您可以将每个查询想象成一个新的临时 table 和您想要的结果。这一个从 Orders
和 Customers
中获取行,根据两个 table 中的 CustomerID
字段匹配它们(连接的 on
子句),然后 returns 只是 Orders
中的几个字段(OrderID
和 OrderDate
)和 Customers
中的一个字段(CustomerName
)。
基本上,您将返回一个新的 table,其中包含 SELECT 语句中的所有列。如果将查询简化为:
SELECT OrderID, OrderDate
FROM Orders
您将获得整个订单的打印输出 table,但只有您指定的两列。
通过 INNER JOIN,您将筛选出结果以仅包含 CustomerID 与 Customers table 中具有相同 CustomerID 的类似行相匹配的订单。在您的 SELECT 语句中,您添加了一列,显示与这些订单匹配的客户姓名。
所以 INNER JOIN 的 ON 部分只是将客户与他们各自的订单相匹配。 SELECT 部分是您使用您感兴趣的三列创建新输出 table 的地方。
有帮助吗?
我在看例子
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
来自 W3School,我想知道我应该如何在脑海中对这些条款进行分组。据我了解,每个 SQL 查询 return 都是 table,并且查询中的子句本身可能 return 是 table。所以我想到了整个
Orders INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID
作为一个 table,我通过应用 SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
来 return 它的子 table。这是思考问题的正确方法吗?
您可以将每个查询想象成一个新的临时 table 和您想要的结果。这一个从 Orders
和 Customers
中获取行,根据两个 table 中的 CustomerID
字段匹配它们(连接的 on
子句),然后 returns 只是 Orders
中的几个字段(OrderID
和 OrderDate
)和 Customers
中的一个字段(CustomerName
)。
基本上,您将返回一个新的 table,其中包含 SELECT 语句中的所有列。如果将查询简化为:
SELECT OrderID, OrderDate
FROM Orders
您将获得整个订单的打印输出 table,但只有您指定的两列。
通过 INNER JOIN,您将筛选出结果以仅包含 CustomerID 与 Customers table 中具有相同 CustomerID 的类似行相匹配的订单。在您的 SELECT 语句中,您添加了一列,显示与这些订单匹配的客户姓名。
所以 INNER JOIN 的 ON 部分只是将客户与他们各自的订单相匹配。 SELECT 部分是您使用您感兴趣的三列创建新输出 table 的地方。
有帮助吗?