我有两个表:
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