【发布时间】:2019-01-12 13:09:37
【问题描述】:
我正在为我的数据库管理系统考试而学习,但我不确定这是否合法。
在一个俱乐部的数据库中,我被要求返回姓名、电子邮件和金额(每年支付)。
- 如果一个人是“单身人士”,则金额为 20.--,
- 如果是组织,金额为150。--
数据库如下所示:
Table Membership
(
id serial PRIMARY KEY,
email text NOT NULL,
... --unnecessary
)
Table Organisation
(
id int REFERENCES Membership(id) PRIMARY KEY,
"name" varchar Not NULL
... -- unnecessary
)
Table SinglePerson
(
id int REFERENCES Membership(id) PRIMARY KEY,
"name" varchar NOT NULL
)
查询如下所示:
SELECT
Name, Email, Amount
FROM
(SELECT
E.Name, M.Email, 20 AS Amount
FROM
SinglePerson AS E
JOIN
Membership As M ON M.Id = E.Id),
(SELECT
O.Name, M.Email, 150 AS Amount
FROM
Organisation AS O
JOIN
Membership AS M ON M.Id = O.Id);
这个查询可能吗?
有没有更好的方法来做到这一点?
非常感谢!
【问题讨论】:
标签: sql postgresql join select subquery