【发布时间】:2019-10-11 21:41:27
【问题描述】:
我正在尝试从书籍中返回书名、书籍摘要和作者姓名进行查询,其中只有一位作者按书籍 ID 排序。一本书可以有很多作者,一个作者可以写很多书,所以这是多对多的关系,但我做错了什么或忘记了什么。
我的桌子是:
book_tb(id, title, summary);
author_tb(id, name);
book_author_tb(id, book_id, author_id);
我已经试过了:
SELECT b.title, b.summary, a.name
FROM book_tb b
INNER JOIN book_author_tb ba ON b.id = ba.book_id
INNER JOIN author_tb a ON ba.author_id = a.id
GROUP BY b.title, b.summary, a.name, b.id
HAVING count(ba.author_id) = 1
ORDER BY b.id;
【问题讨论】:
-
能否请您发布数据样本以及输出的样子?
-
是的,
a.name在GROUP BY列表中,您会为每个作者获得一个组,其中HAVING count(ba.author_id) = 1始终为真。 -
一位作者是什么意思?是只有一位作者的书,还是您想选择所有书籍,如果一本书的作者不止一位,则应随机选择一位?
标签: sql postgresql