日期:2014-05-17  浏览次数:20423 次

关于group语句
本帖最后由 suanleba10 于 2013-08-19 12:11:23 编辑

code:
SELECT Shippers.ShipperName, Employees.LastName,
COUNT(Orders.OrderID) AS NumberOfOrders
FROM ((Orders
INNER JOIN Shippers
ON Orders.ShipperID=Shippers.ShipperID)
INNER JOIN Employees
ON Orders.EmployeeID=Employees.EmployeeID)
GROUP BY ShipperName,LastName;


提问:
1. join ..on, group, select这三个函数(不确定是不是都是函数)内部的处理机制的顺序是怎样的?我理解是先join..on, 后group, 最后用select输出。
2. group more than one columns, 就像上边那样。 group了两项, ShipperName,LastName, 处理时时把他们当成‘&&‘ 还是’||’ 还是就是分成独立的两组分别处理(貌似应该不可能)?

求指教!
可能问得有点莫名其妙,但我是纯SQL新手,望莫笑!
谢谢!

------解决方案--------------------
--#1.on->join->group->select
--SQL逻辑执行顺序
(8)    SELECT (9) DISTINCT (11) <TOP_specification> <select_list>
(1)    FROM <left_table>
(3)        <join_type> JOIN <right_table>
(2)            ON <join_condition>
(4)    WHERE <where_condition>
(5)    GROUP BY <group_by_list>
(6)    WITH {CUBE 
------解决方案--------------------
 ROLLUP}    
(7)    HAVING <having_condition>
(10)ORDER BY <order_by_list>
--#2.当成&&来处理
--ShipperName和LastName,两个字段的组合值一模一样,才会被放到一个组里面。