Вы можете получить желаемый результат с помощью этого:
SELECT
roll
, SUM(amount) summed_amt
FROM fee
WHERE roll = '22222'
GROUP BY roll
;
Но если вам действительно нужны обе таблицы, попробуйте следующее:
SELECT
roll_no
, summed_amt
FROM stu_profile p
JOIN (
SELECT
roll
, SUM(amount) summed_amt
FROM fee
GROUP BY roll
) AS fee
ON p.roll_no = fee.roll
WHERE p.roll_no = '22222'
Вам не нужна суммаво внешнем запросе, потому что вы уменьшаете внутренний запрос до одной строки для каждого roll
и фильтруете только для одного броска.
кстати, только в MySQL это может бытьдопустимый запрос:
select <b>roll,amount</b>,sum(amount) from fee group by <b>roll</b>
В стандартном SQL нельзя группировать только по одному столбцу roll
, а вывести 2 столбца (плюс агрегация).Это связано с тем, что изначально вы получили неправильный результат, потому что эта нестандартная группа по синтаксису, который MySQL (плохо) допускает.
Research only_full_group_by