У меня есть таблица, в которой хранятся два внешних ключа, реализующих отношение: m.
Один из них указывает на человека (subject
), другой - на определенный элемент.
Теперьколичество предметов, которое может иметь человек, указано в другой таблице, и мне нужен запрос, который бы возвращал то же количество строк, что и количество предметов, которое может иметь человек.
Остальные записи могутбыть заполнены NULL
значениями или чем-то еще.
Оказалось, что решить эту проблему со стороны приложения было болезненно, поэтому я решил попробовать другой подход.
Изменить: Пример
CREATE TABLE subject_items
(
sub_item integer NOT NULL,
sal_subject integer NOT NULL,
CONSTRAINT pkey PRIMARY KEY (sub_item, sal_subject),
CONSTRAINT fk1 FOREIGN KEY (sal_subject)
REFERENCES subject (sub_id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT fk2 FOREIGN KEY (sub_item)
REFERENCES item (item_id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
Мне нужен запрос / функция, которая бы возвращала все предметы субъекта (предмет может иметь 5 предметов), но субъекту назначено только 3 предмета.
Возврат будетбыть примерно таким:
sub_item | sal_subject
2 | 1
3 | 1
4 | 1
NULL | 1
NULL | 1
Я использую postgresql-8.3