【发布时间】:2012-02-12 02:31:23
【问题描述】:
我有一个存储两个外键的表,实现了 n: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
【问题讨论】:
-
无法理解情况。你能给出一些表结构和查询的期望输出吗?
-
问题末尾的返回表必须在所有行中为
sal_subject保存值1,而不是NULL,才有意义。
标签: sql postgresql plpgsql postgresql-8.3