Sql表从Postgres函数的结果中选择

Sql表从Postgres函数的结果中选择,sql,postgresql,Sql,Postgresql,我有一个生成评估信息类型的函数,定义如下 create type course_assessment_info as ( total_count int, mark_average double precision, weight_sum double precision, weighted_mark_average double precision ); 当我使用我的函数进行单个查询时,如下面所示,我得到了预期的结果

我有一个生成评估信息类型的函数,定义如下

create type course_assessment_info as (
  total_count           int,
  mark_average          double precision,
  weight_sum            double precision,
  weighted_mark_average double precision
);
当我使用我的函数进行单个查询时,如下面所示,我得到了预期的结果

select * 
from course_assessment_info_by_student_id_and_course_id('9be15896-40ca-46c6-8fdd-0ffe3bd79
586', '65dbdce1-fd76-4951-9db1-d089b3794d80');
结果:

 total_count |   mark_average    |    weight_sum     | weighted_mark_average
-------------+-------------------+-------------------+-----------------------
           1 | 0.834768535328714 | 0.540032932289522 |     0.450802499916595
当我在使用联接的较大函数上使用它时,我不会得到单独的列名。 我的理解是,我需要使用select*from course\u assesss。。。 然而,我很难弄清楚如何格式化,这样PostgreSQL就不会抛出语法错误

select course_assessment_info_by_student_id_and_course_id(s.id, c.id)
from student s
join student_course sc on s.id = sc.student_id
join course c on c.id = sc.course_id;
谢谢你的帮助

您似乎想要横向连接:

这也应该做到:

select (course_assessment_info_by_student_id_and_course_id(s.id, c.id)).*
from student s
join student_course sc on s.id = sc.student_id
join course c on c.id = sc.course_id;

函数应该在FROM子句中,而不是SELECT子句中。此外,它有助于包含现有代码生成的错误。看起来您可能需要按照使用横向连接,但我不是postgres用户,因此我无法提供更多帮助。看起来您需要横向连接。
select (course_assessment_info_by_student_id_and_course_id(s.id, c.id)).*
from student s
join student_course sc on s.id = sc.student_id
join course c on c.id = sc.course_id;