У меня есть структура таблицы с диаграммой ER, подобной этой.
Я хочу создать функцию PostgresQL, которая принимает в качестве аргументов две даты и возвращает всех учителей, занятых в командах за период .
![enter image description here](https://i.stack.imgur.com/ZVkVz.png)
Я сделал простой запрос, чтобы выбрать все классы в данный период времени, как этот
select * from classes where starts > '2020-01-01' AND ends < '2030-01-01'
Это возвращает классы, такие как:
0 0 "2020-02-25 20:31:30.463451" "2020-03-26 20:31:30.463451" 0 "Attendance"
1 1 "2020-02-25 20:33:09.336577" "2020-03-26 20:33:09.336577" 0 "Online"
2 4 "2020-02-25 20:47:04.939029" "2020-03-26 20:47:04.939029" 0 "Attendance"
3 1 "2020-02-25 20:47:12.139878" "2020-03-26 20:47:12.139878" 0 "Attendance"
4 2 "2020-02-25 20:47:18.468703" "2020-03-26 20:47:18.468703" 0 "Attendance"
10 1 "2020-02-24 21:00:34.229316" "2020-01-26 21:00:34.229316" 2 "Attendance"
11 1 "2020-02-24 21:30:37.319799" "2020-01-26 21:30:37.319799" 2 "Attendance"
12 1 "2020-02-15 21:30:49.223645" "2020-01-26 21:30:49.223645" 2 "Attendance"
Теперь я хочу попробовать обернуть эту логику c в функцию и просто вернуть учителей вместо этого.
CREATE OR REPLACE FUNCTION availible_teachers(start_date date, end_date date)
RETURNS TABLE (teacherid, firstname, lastname) AS
$func$
BEGIN
RETURN QUERY
--query to be executed
...
end;
$func$
Я застрял в том, как я могу получить доступ к учителям на основе доступа из классов?