Я пытаюсь объединить одну таблицу с двумя другими, которые не связаны друг с другом, но связаны с первой идентификатором
У меня есть следующие таблицы
create table groups(
id int,
name text
);
create table members(
id int,
groupid int,
name text
);
create table invites(
id int,
groupid int,
status int \\ 2 for accepted, 1 if it's pending
);
Затем Я вставил следующие данные
insert into groups (id, name) values(1,'group');
insert into members(id, groupid, name) values(1,1,'admin'),(1,1,'other');
insert into invites(id, groupid, status) values(1,1,2),(2,1,1),(3,1,1);
Obs:
- У администратора нет приглашения
- У группы есть утвержденное приглашение со статусом 2 (поскольку участник «прочее» присоединился)
- Группа имеет два ожидающих приглашения со статусом 1
Я пытаюсь сделать запрос, который получит следующий результат
groupid | name | inviteId
1 | admin | null
1 | other | null
1 | null | 2
1 | null | 3
Я попробовал следующие запросы без удачи
select g.id, m.name, i.id from groups g
left join members m ON m.groupid = g.id
left join invites i ON i.groupid = g.id and i.status = 1;
select g.id, m.name, i.id from groups g
join (select groupid, name from members) m ON m.groupid = g.id
join (select groupid, id from invites where status = 1) i ON i.groupid = g.id;
Есть идеи, что я делаю неправильно?