我有三张表:
图书:
{id, title, status}
{1, SuperHero, false}
{2, Hobbit, true}
{3, Marvel, true}
标签:
{id, name}
{1, Drama}
{2, Comedy}
{3, Triller}
书籍标签:
{book_id, tag_id}
{1, 1}
{1, 2}
{2, 2}
每本书都可以有或没有很多独特的标签。
1)根据 book_id 在一次查询中获取带有数据(tag.id、name)的所有标签的正确方法是什么?
2)在一个查询中为每一本书行获取带有标签数组的状态(true)标题的所有书籍的正确方法是什么?
我为第一个想出了这个,但在第二个中挣扎:
SELECT tag_id, name
FROM books_tags
INNER JOIN tags ON tag_id = tags.id
WHERE book_id = 1
对于第二个要求,请使用以下内容:
SELECT
b.title,
array_agg(t.name) AS tags
FROM books AS b
INNER JOIN books_tags AS bt ON (b.id = bt.book_id)
INNER JOIN tags AS t ON (bt.tag_id = t.id)
WHERE b.status = true
GROUP BY 1;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句