Are*_*yst 6 sql ms-access group-by count
我对多重查询有一点问题.(RDBMS:访问)
以下是数据库模式:(此查询中仅使用S_Cards,Books,Authors,Students表)S_Cards是学生书籍订单(在库中).

查询:选择学生中最受欢迎的作者以及在图书馆中订购的作者书籍的编号.
虽然我可以在一个查询中获得这样的订单列表+这样的作者:
SELECT
Students.FirstName & " " & Students.LastName AS [Student],
Books.Name AS [Book], Authors.FirstName & " " & Authors.LastName AS [Author]
FROM
Students,
Books,
S_Cards,
Authors
WHERE
S_Cards.ID_Student = Students.ID
AND S_Cards.ID_Book = Books.ID
AND Books.ID_Author = Authors.ID
ORDER BY Authors.LastName
Run Code Online (Sandbox Code Playgroud)
结果(对不起,用俄语):

我无法弄清楚,为什么我不能这样COUNT和GROUP BY:
SELECT
Students.FirstName & " " & Students.LastName AS [Student],
Books.Name AS [Book],
COUNT(Authors.FirstName & " " & Authors.LastName) AS [Number of books]
FROM Students, Books, S_Cards, Authors
WHERE
S_Cards.ID_Student = Students.ID
AND S_Cards.ID_Book = Books.ID
AND Books.ID_Author = Authors.ID
GROUP BY 3
Run Code Online (Sandbox Code Playgroud)
我收到一个错误,'Authors.FirstName&""&Authors.LastName'不是静态函数或组的一部分.
问题:
SQL Server 中的字符串连接运算符+不是&。另外,您应该按非聚合函数的事物进行分组。
SELECT Students.FirstName + ' ' + Students.LastName AS [Student]
, Books.Name AS [Book]
, COUNT(Authors.FirstName + ' ' + Authors.LastName) AS [Number of books]
FROM Students
JOIN S_Cards
ON S_Cards.ID_Student = Students.ID
JOIN BOOKS
ON S_Cards.ID_Book = Books.ID
JOIN Authors
ON Books.ID_Author = Authors.ID
GROUP BY Students.FirstName + ' ' + Students.LastName
, Books.Name
Run Code Online (Sandbox Code Playgroud)
请注意,我已将您的查询更改为标准 ANSI 连接语法,这使得错误更难犯并且更容易阅读。
仔细想想,你的伯爵似乎有些奇怪。不是书的数量吗COUNT(Books.ID)?
| 归档时间: |
|
| 查看次数: |
45886 次 |
| 最近记录: |