关于连接的SQL查询

时间:2013-03-07 04:47:11

标签: mysql sql-server

我正在研究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 +本书。我不是要求答案,如果可能的话只是一些指示:)。

4 个答案:

答案 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)