Я предполагаю, что идентификатор встречается только один раз в ваших таблицах в таблице a, но может отсутствовать в обоих. Если он всегда существует в таблице a
, вы можете использовать LEFT JOIN
вместо UNION
.
SELECT COALESCE(SUM(marks), 0)
FROM
(
SELECT marks FROM a WHERE id = 45
UNION ALL
SELECT SUM(evaluation_marks) AS marks FROM b WHERE id = 45
) x
Редактировать
Если у вас есть все пользователи в таблице a, используйте
SELECT a.marks + COALESCE( SUM( b.evaluation_marks ), 0 )
FROM a
LEFT OUTER JOIN b ON ( b.id = a.id )
WHERE a.id = 45
GROUP BY a.id, a.marks
Вы должны рассмотреть вопрос об изменении модели стола. Почему вы храните имя и идентификатор дважды? Разве ты не можешь сделать это так:
id name marks evaluation marks
=======================================
12 Ram 87 0
23 John 67 12
45 Mark 45 34
78 Chris 0 9
98 Nancy 0 10