나는 그것이 오류로 반환 특정 과정뿐만 모듈을 호출하는 것을 시도하고있다 :이 postgresql 쿼리는 어떻게 테이블로 반환 될 수 있습니까?
CREATE OR REPLACE FUNCTION course_modules(_courseID integer)
RETURNS SETOF modules AS
$$
BEGIN
RETURN QUERY SELECT * FROM modules WHERE mod_id =(SELECT module_id from coursemodules WHERE course_id = _courseID);
END
$$
LANGUAGE 'plpgsql';
coursemodule 테이블 : 식
쿼리로 사용되는 하위 쿼리에 의해 반환 둘 이상의 행을
CREATE TABLE coursemodules(
course_id integer references courses (id) ON DELETE CASCADE,
module_id integer references modules (mod_id) ON DELETE CASCADE
);
모듈 표
CREATE TABLE modules(
documents text NOT NULL,
mod_id serial primary key,
content text NOT NULL,
title varchar(50) NOT NULL
);
CREATE TABLE courses(
finishDate Date,
description text NOT NULL,
duration varchar(50) NOT NULL,
startDate Date,
id serial primary key,
courseName varchar(50) NOT NULL
);
'course_id 선택, 코스 (*) 코스 모듈로부터 GROUP BY course_id'를 실행하면'course_id'가 반복되는 행을 볼 수 있습니다. – Dai
'course_id'는'coursemodules' 테이블의 프라이 머리 키가 아니라'UNIQUE' 제약 조건이 선언되어 있지 않습니다. – Dai