Я чувствую, что не могу решить свою задачу без помощи сообщества.К сожалению, мои знания SQL слабы.
У меня есть 2 таблицы - user
и referral
, которые представляют данные об отправителях и рефералах отправителей (у отправителя может быть реферал 1..n, но у реферала может быть только один отправитель).
create table user
(
id integer primary key,
name text,
email text
);
create table referral
(
id integer primary key,
sender_id integer references user1 (id),
referral_id integer references user1 (id),
token text,
unique (referral_id)
);
Я хотел бы создать 2 запроса - получить все рефералы для конкретного отправителя и другие, чтобы получить отправителя для конкретного реферала.
Для получения всех рефералов:
SELECT user1.name AS "sender", referral.referral_id AS "referral"
FROM user1
JOIN referral ON referral.sender_id = user1.id
WHERE referral.sender_id = requested sender id;
Вывод:
| sender | referral |
+----------+----------+
| John | 5 |
| .... | ... |
|----------|----------|
Для получения отправителя для конкретного реферала:
SELECT user1.name AS "sender", referral.referral_id AS "referral"
FROM user1
JOIN referral ON referral.sender_id = user1.id
WHERE referral.referral_id = requested referral id;
Вывод:
| sender | referral |
+----------+----------+
| John | 5 |
Все в порядке, кроме referral
вывода.Я хотел бы видеть реферальное имя вместо id.
Также я хотел бы получить выходные данные для отправителя с определенным рефералом, имя только отправителя, без второго столбца referral
, поскольку существует отношение один к одному.
Может ли кто-нибудь помочь мне понять join
в моем случае?!
Заранее спасибо!