By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
Help with an interesting Postgres question: Why isn't an Index Only Scan used on a partition accessed via the parent table?.
CREATE TABLE filmy
(
id_filmu serial not null primary key,
tytul varchar(40),
rok_produkcji int,
cena real
);
insert into filmy(tytul,rok_produkcji) values('Wesele',2004);
CREATE TABLE aktorzy
(
id_aktora serial not null primary key,
imie varchar(20),
nazwisko varchar(20)
);
insert into aktorzy(id_aktora, imie, nazwisko) values(2, 'Tamara','Arciuch'),(3, 'Pawel','Wilczak'),(4, 'Maciej','Stuhr');
CREATE TABLE obsada
(
id_filmu int not null,
id_aktora int not null
);
insert into obsada values(1,2),(1,3),(1,4);
1 rows affected
3 rows affected
3 rows affected
CREATE FUNCTION OPIS_FILMU(id INTEGER) RETURNS varchar AS $$
SELECT 'Film ' || f.tytul || ' został nakręcony w roku '|| f.rok_produkcji || ' przy udziale aktorow: ' || string_agg(a.imie || ' ' || a.nazwisko,', ')
FROM
filmy f JOIN obsada o ON f.id_filmu=o.id_filmu JOIN aktorzy a ON a.id_aktora=o.id_aktora
WHERE f.id_filmu = $1
GROUP BY f.id_filmu;
$$ LANGUAGE SQL;
select opis_filmu(1)
opis_filmu |
---|
Film Wesele został nakręcony w roku 2004 przy udziale aktorow: Tamara Arciuch, Pawel Wilczak, Maciej Stuhr |