编写正确的SQL查询

时间:2014-02-12 17:45:36

标签: sql sql-server-2008

我花了很多时间在这上面,但我仍然没有这么做。

显示拥有多位作者的所有图书的标题ID,标题和作者数量。我有这个,但不认为它是完全正确的。使用3个表(标题,标题作者和作者)。标准不应该是au_id和它的相同次数吗?我的代码为每个title_id返回25的奇怪列。我想了解如何从罗嗦的问题中编写正确的语法....

 SELECT titles.title_id, titles.title, COUNT(titleauthor.au_id) AS nbrAuthors
 FROM titles CROSS JOIN titleauthor 

 GROUP BY titles.title_id, titles.title

 HAVING COUNT(titleauthor.au_id) >1

更新代码:我想是这样的!写出伪代码对这个有很大帮助。

SELECT titles.title_id, titles.title, COUNT(titleauthor.au_id) AS nbrOfAuthors

FROM titles LEFT JOIN titleauthor ON titles.title_id = titleauthor.title_id
GROUP BY titles.title, titles.title_id
HAVING COUNT(titleauthor.au_id)>1;

1 个答案:

答案 0 :(得分:1)

每当您将多个表连接在一起时,您需要指定重叠的位置。

例如,我想在这里添加以下内容:

WHERE titles.title_id = titleauthor.title_id
AND titleauthor.au_id = authors.au_id

您可能已经看过以下几十次,但请记住语法是:

SELECT foo, etc FROM tables WHERE conditions ORDER BY/GROUP BY some_field