用对象数组替换整数数组



我有两个表:

documents
id  | name | images
-------------------
int | text | int[]
images
id  | name | size
-----------------
int | text | int

我想要的是得到一份包含所有图像细节的文档。例如,我有这样的文档:

id  | name   | images
---------------------
12  | 'test' | [7,5]

这些图像:

id  | name   | size
---------------------
5   | 'img1' | 4659
7   | 'img8' | 6137

我想要这个结果:

id  | name   | imagedetails
---------------------
12  | 'test' | [{name:'img1',size:4659},{name:'img8',size:6137}]

我试着用";CCD_ 1"CCD_ 2";以及";CCD_ 3";,但我不太了解它们是如何工作的,尽管它们应该是好的功能。

如果有人能帮我一把,那就太好了。提前谢谢。

这里有一些有效的东西,但我真的不确定它是最优的:

WITH list_images_brute AS (
SELECT unnest(f.images) as images
FROM documents d
WHERE d.id = $1
)
, list_images AS (
SELECT json_build_object('name',p.name,'size',p.size) as images, $1 as id
FROM images p
WHERE p.id IN(
SELECT images
FROM list_images_brute
)
)
SELECT
d.id, d.name, array_agg(lp.images) as imagedetails
FROM documents d
JOIN liste_images lp
ON d.id = lp.id
WHERE d.id = $1
GROUP BY d.id, d.name

最新更新