たとえば、テーブルusers
(ID、名前、メール)があります。テーブルがありますphotos
(id, value) 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。