Cela répond à la question initiale.
Vous n'avez besoin ni des tags
ni les users
table pour votre requête, elle peut donc être beaucoup simplifiée.
DISTINCT
n'est pas autorisé avec JSON_AGG()
. Mais vous pouvez utiliser une sous-requête :
SELECT b.user_id, JSON_ARRAYAGG( b.tag_id) AS tags
FROM (SELECT DISTINCT b.user_id, bt.tag_id
FROM bookmark_tag bt JOIN
bookmark b
ON b.id = bt.bookmark_id
) b
GROUP BY b.user_id;
ici est un db<>violon.