我有这些表格(authors
,quotes
,tags
,quotes_tags
),我想对随机引号列表进行单一查询与他们适当的作者和标签(许多)信息。
这是我现在所拥有的,但标签正在被压扁,只返回一个。我将如何使用返回为json
的标签或任何适当的约定来返回这组引号的查询?
SELECT *
FROM quotes
JOIN authors ON quotes.author_id = authors.id
JOIN tags ON tags.id = quotes.id
ORDER BY RANDOM()
LIMIT 50
我得到以下内容:
author | quote | tags
---------------------
john | lorem | hey
brian | lorem | test
但我喜欢以下内容:
author | quote | tags
-------------------------------
john | lorem | hey, another (or whatever convention for a list -- json?)
brian | lorem | test, one, two
答案 0 :(得分:0)
在版本8.4及更高版本中,您可以使用array_agg
:
SELECT a.author, q.quote, array_agg(t.tags)
FROM quotes q
INNER JOIN authors a
ON q.author_id = a.id
INNER JOIN tags t
ON t.id = q.id
GROUP BY a.author, q.quote
ORDER BY RANDOM()