【发布时间】:2013-05-15 21:20:09
【问题描述】:
我已经尝试了几个小时来自学并学习如何使用我的虚拟测试数据列出所有客户以及他们每个人下的订单。我想返回 CustomerID、CustomerName、OrderTypeName 和计数“OrderCount”
我尝试了几种在网上找到的不同方法和技术,但我不断遇到类似/不同的问题,这些问题都与我无法弄清楚的明显简单的解决方案有关。
这是我当前的查询。
SELECT
c.CustomerID, c.CustomerName, t.OrderTypeName
FROM
tblCustomer c, tblOrder o, tblOrderType t
INNER JOIN
(SELECT
o.CustomerID, COUNT(o.CustomerID) AS OrderCount
FROM
tblOrder o, tblCustomer c
WHERE
o.CustomerID = c.CustomerID)
ORDER BY CustomerName;
这个目前在关键字'ORDER'附近给出错误语法的错误。
【问题讨论】:
-
Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已随 ANSI-92 SQL 标准(超过 20 年前)。而且您绝对不应该混合这两种样式 - 使用逗号分隔的表格列表,然后混合使用
INNER JOIN... 切换到正确的 ANSI JOIN 语法 - 你不会后悔的它! -
您必须指定要执行连接的列。这是唯一的错误。请参阅 Dibster 的回答。
标签: sql sql-server tsql