Как получить несколько строк и если каких-то нет, то подставить по умолчанию?
У меня есть табличка settings:
create table settings (
name text,
value int
);
Со значениями:
insert into settings values ('A', 20), ('B', 30);
Мне нужно эти значения объединить в одну строку, и если нет значений, подставить по умолчанию. Пока я придумал следующее:
select a.value a_value, B.value b_value, COALESCE(C.value, 1) c_value from settings a
left join settings B on B.name='B'
left join settings C on B.name='C'
WHERE A.name='A';
Но у меня проблема в том, что если будет отсутствовать значение А, то результат будет нулевой. Как быть? Вот пример для потестить: http://sqlfiddle.com/#!17/6651a
Ответы (1 шт):
Автор решения: Roman-Stop RU aggression in UA
→ Ссылка
Как вариант:
select
coalesce(A.value, 11) a_value,
coalesce(B.value, 22) b_value,
coalesce(C.value, 33) c_value
from (values (1)) as t (v)
left join settings A on A.name = 'A'
left join settings B on B.name = 'B'
left join settings C on C.name = 'C'