Ты не хочешь UNION
!!!Это удаляет дубликаты, поэтому вы не получите правильное значение, если цена окажется одинаковой.Вы хотите UNION ALL
.
Один из способов сделать это - переместить запрос в предложение FROM
и использовать агрегирование:
select sum(price)
from ((select price from PC where model = '1005'
) union all
(select price from Printer where model = '3003'
)
) p;
Для двух скалярных значений вы также можете простодобавьте их:
select ( (select price from PC where model = '1005') +
(select price from Printer where model = '3003')
)
from dual;
Конечно, если один из них отсутствует, то в этом случае будет результат NULL
.