我可以使用相同的主键从 3 个不同的表中找到值吗?

问题描述 投票:0回答:0

我在数据库中有一个查询,我正在为我的大学项目工作,我有 3 个不同的研究项目,我想找到所有参与课程的教授的名字,这些教授出现在每个不同的项目类型中.相反,我得到的结果是在所有项目中工作的所有教授的名字,而不仅仅是交叉结果。季节性节目表和外语节目表都在扩展节目实体 (ISA),所有提到的表内部都有一些基本数据来解决我的功能,所以我可以看看它是否有效。

我的代码如下:

CREATE OR REPLACE FUNCTION public.fn_question_3_9()
RETURNS TABLE(name character varying, surname character varying) 
LANGUAGE 'plpgsql'
COST 100
VOLATILE PARALLEL UNSAFE
ROWS 1000

AS $BODY$
BEGIN
     RETURN QUERY
     SELECT DISTINCT pr.name, pr.surname
     FROM "Person" pr
     JOIN "Professor" prof USING (amka)
     JOIN "Teaches" te USING (amka)
     JOIN "CourseRun" cour USING (serial_number)
     JOIN "Course" cr ON (cour.course_code = cr.course_code)
     JOIN "ProgramOffersCourse" pof ON (cr.course_code = pof."CourseCode")
     JOIN "Program" pro ON (pof."ProgramID" = pro."ProgramID")
     WHERE pro."ProgramID" = (SELECT "ProgramID" FROM "SeasonalProgram") 
     AND pro."ProgramID" =(SELECT "ProgramID" FROM "ForeignLanguageProgram")
     AND pro."ProgramID" IS NOT NULL;
END;
$BODY$;

我尝试使用您在代码中看到的条件找到它们,这显然是错误的,我也尝试使用 UNION 找到它们,但我认为这也不正确。我期望它能得到教授的名字,这些教授的课程在所有研究项目中都有。

postgresql function pgadmin-4
© www.soinside.com 2019 - 2024. All rights reserved.