@WayMax

Какой SQL-запрос позволит получить такую выборку?

Есть база данных вида:
41836b826df04d5fbb6ce9e2173bcd35.png

С данными:
d67f74c76668445cafb19c989878b91a.png
Таблицы PC, Monitor, Printer соответственно заполнены значениями указанными на последнем скрине.

Каким SQL-запросом можно получить такую выборку:
b7eafb654bc24e538398e68ff096253b.png
  • Вопрос задан
  • 298 просмотров
Решения вопроса 2
djgorod
@djgorod
Если верно предположение, что в Task только один id_* имеет не-null значение, то как-то так (решение в лоб, можно изящнее)
select value, (case
when id_pc is not null then (select value from PC where id=id_pc)
when id_monitor is not null then (select value from Monitor where id=id_monitor)
when id_printer is not null then (select value from Printer where id=id_printer)
end) as res from Task
order by id;
Если допущение не верно, то просто условие в case будет сложнее
Ответ написан
denman1985
@denman1985
SQL, Oracle Forms/Reports dbd
select distinct a.id, a.value, (case when a.id_pc is not null then b.value when a.id_monitor is not null then c.value when a.id_printer is not null then d.value else null end) inv_num
from task a left join pc b on (a.id_pc=b.id)
left join monitor c on (a.id_monitor=c.id)
left join printer d on (a.id_printer=d.id)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы