1

我正在做一个 SQL 数据库项目,我应该找到写过 3 本书或更多书的作者的名字。我的代码如下。该错误表示 A 缺少 FROM 并且我尝试了不同的 COUNT 选项。我尝试了许多不同的变体,但我仍然无法让它产生输出。

SELECT A.alastname FROM Author 
WHERE (SELECT COUNT(*) FROM Book B WHERE B.btitle = A.btitle AND B.title > 2);

Author 包含名称,Book 包含标题、页面等。还有 Author_Book 包含帮助和出价。我需要使用联接吗?我仍然不明白如何在不使用运算符的情况下指定 3 本书以上。我不是在要求答案,如果可能的话只是一些指示:)。

4

4 回答 4

2

缺少别名。

SELECT A.alastname FROM Author A 
WHERE (SELECT COUNT(*) FROM Book B WHERE B.btitle = A.btitle AND B.title > 2);
于 2013-03-07T04:48:54.170 回答
1

您的原始查询不是有效的 SQL。

你可能是这个意思:

SELECT A.alastname
FROM Author A
WHERE (SELECT count(*) FROM Book B WHERE B.btitle = A.btitle) > 2
于 2013-03-07T04:58:05.900 回答
0

正如你所说,你有一个 Author<->Book 的关系表,所以你应该使用它:

SELECT A.alastname
FROM Author A
JOIN
(
 SELECT aid FROM Author_Book GROUP BY aid HAVING count(bid)>=3
) T
on (A.id=T.aid)
于 2013-03-07T06:44:07.273 回答
0

看起来您缺少 Author 表的别名并试图将其引用为 A

SELECT A.alastname FROM Author as A 
WHERE (SELECT COUNT(*) FROM Book B WHERE B.btitle = A.btitle AND B.title > 2);
于 2013-03-07T04:49:56.700 回答