Я пытаюсь вызвать модули, которые в конкретном курсе, но он возвращает в качестве ошибки: более одной строки, возвращаемой подзапрос используется как выражениеКак этот запрос 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