我在进行多表查询时遇到了一些问题(关系型数据库:Access)。
这是数据库模式:(仅在此查询中使用 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
结果(抱歉,是俄语):
我无法理解为什么不能像这样使用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
我收到一个错误提示,指出 'Authors.FirstName & " " & Authors.LastName' 不是静态函数或组的一部分。
问题:
- 有没有办法在不使用 JOIN 的情况下执行此查询,只使用 GROUP BY、SELECT、UNION?如何实现?
- 我的第二个查询有什么问题?