我想打電話給其在特定的課程,但它返回的錯誤模塊:這個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
);
如果您運行'SELECT course_id,COUNT(*)FROM coursemodules GROUP BY course_id',您將看到'course_id'重複的行。 – Dai
我注意到'course_id'沒有被聲明爲'coursemodules'表的主鍵,也沒有'UNIQUE'約束。 – Dai