Есть две таблицы с отношением один к одному, и законно, что вторая таблица может иметь меньше строк, чем первая.
Вот код sql со вставленными данными:
create table data(
data_id int primary key,
name text
);
create table data_extra(
extra_id int references data(data_id) primary key ,
extra text
);
insert into data values (1, 'n1');
insert into data values (2, 'n2');
insert into data values (3, 'n3');
insert into data_extra values (1, 'e1');
insert into data_extra values (2, 'e2');
select * from data left join data_extra on data_id = extra_id;
-- data_id | name | extra_id | extra
-- ---------+------+----------+-------
-- 1 | n1 | 1 | e1
-- 2 | n2 | 2 | e2
-- 3 | n3 | |
-- (3 rows)
Мне нужно сделать запрос для всех data
+ data_extra
таблиц, где дополнительные! = 'E1' Вот моя попытка:
select * from data left join data_extra on data_id = extra_id
where extra != 'e1';
-- data_id | name | extra_id | extra
-- ---------+------+----------+-------
-- 2 | n2 | 2 | e2
-- (1 row)
Проблема с этим запросом, что он не возвращает data.name = 'n3' строку, у которой нет связанной строки в таблице data_extra.
Как это исправить, чтобы получить в результате data.name = n2 и данные .name = n3.