我花了很多时间在这上面,但我仍然没有这么做。
显示拥有多位作者的所有图书的标题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;
答案 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