Я готовлюсь к экзамену по системам управления базами данных, и есть кое-что, в чем я не совсем уверен, законно это или нет.
В базе данных клуба меня просят вернуть имя, адрес электронной почты и сумму (для оплаты в год).
- Если человек является «SinglePerson», сумма составляет 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);
Возможен ли этот запрос?
Есть ли лучший способ сделать это?
Большое спасибо!