我应该考虑加入哪些分组?

时间:2015-09-28 16:14:51

标签: sql join database-design inner-join

我正在查看示例

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
来自W3Schools,我想知道我应该如何将这些条款归为一组。据我所知,每个SQL查询都返回一个表,查询中的子句本身可以返回一个表。所以我想到了整个

Orders INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID

作为一个表格,我通过对其应用SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate来返回它的子表。这是思考问题的正确方法吗?

2 个答案:

答案 0 :(得分:1)

您可以将每个查询视为组成具有所需结果的新临时表。这个来自OrdersCustomers的行,根据两个表中的CustomerID字段(连接的on子句)匹配它们,然后返回几个来自OrdersOrderIDOrderDate)的字段以及来自CustomersCustomerName)的字段。

答案 1 :(得分:0)

基本上,您将返回一个包含SELECT语句中所有列的新表。如果您将查询简化为:

<img />

您将获得整个Orders表的打印输出,但只有您指定的两列。

使用INNER JOIN,您将过滤结果,仅包含CustomerID与Customers表中具有相同CustomerID的类似行匹配的订单。使用SELECT语句,您将添加一个列,显示与这些订单匹配的客户名称。

所以INNER JOIN的ON部分只是将客户与他们各自的订单相匹配。 SELECT部分​​是您创建新输出表的地方,其中包含您感兴趣的三列。

这有帮助吗?