我正在研究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包含帮助和出价。我需要使用加入吗?我仍然不明白如何在不使用运算符的情况下指定3 +本书。我不是要求答案,如果可能的话只是一些指示:)。
答案 0 :(得分:2)
缺少别名。
SELECT A.alastname FROM Author A
WHERE (SELECT COUNT(*) FROM Book B WHERE B.btitle = A.btitle AND B.title > 2);
答案 1 :(得分:1)
您的原始查询无效SQL。
你可能意味着这个:
SELECT A.alastname
FROM Author A
WHERE (SELECT count(*) FROM Book B WHERE B.btitle = A.btitle) > 2
答案 2 :(得分: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);
答案 3 :(得分:0)
正如你所说,你有一个关于作者< - > 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)