例如,我有表users
(id、name、email)。有表photos
(id,值) 有一个表userphotos
,由关系组成:user_id,photo_id。
我需要一个函数来以这种方式获取所有用户的照片:
- id1 姓名1 电子邮件1 照片1
- id2 姓名2 电子邮件2 照片2
等等
用户的照片数量未知。
如何创建 plpgsql 函数来创建这样的结果?
CREATE OR REPLACE FUNCTION test_function()
RETURNS TABLE(id int, name character varying, email character varying, photos int[]) AS $
DECLARE
u RECORD;
BEGIN
FOR u IN SELECT * FROM users LOOP
return NEXT u; -- will return user without photos
-- but how to populate u with photos as array
-- got from query:
-- SELECT photo_id FROM userphotos WHERE user_id = u.id
END LOOP;
END;
$ LANGUAGE plpgsql
PostgreSQL 版本。9.0。