Как я могу ВЫБРАТЬ книгу в этом формате:
{
title: 'Avengers',
description:'Good book',
tags: [{id:1, name: 'Drama'},{id:2, name: 'Horror'}]
authors: [{id:1, name: 'Alex'},{id:2, name: 'Tanya'}]
}
для таблиц с отношением "многие ко многим":
Или, может быть, лучше сделать 3 разных pool.requests?
книг
|id|title |description|
|1 |'Avengers'|'Good book'|
|2 |'Fear' |'Scary'
авторов
|id|name
|1 |'Alex'
|2 |'Tanya'
авторы_ книг
|book_id|author_id
|1 |1
|1 |2
|2 |1
теги
|id|name
|1 |'Drama'
|2 |'Horror'
тегов_бук
|book_id|tag_id
|1 |1
|1 |2
|2 |1
Я использовал это раньше без таблицы авторов:
SELECT b.title, b.id, b.description,
json_agg(json_build_object('id', t.id, 'name', t.name, 'description',
t.description, 'likes', tb.likes) ORDER BY tb.likes DESC) AS tags
FROM books AS b
INNER JOIN tags_books AS tb ON (b.id = tb.book_id)
INNER JOIN tags AS t ON (tb.tag_id = t.id)
WHERE b.id = $1
GROUP BY b.id;`
Но с новым INNER JOIN для авторов таблиц появятся повторяющиеся значения.