РЕДАКТИРОВАТЬ: На основе последние изменения по OP;вам нужно просто сделать GROUP BY
.
Попробуйте:
Select m.meal_id,
m.name,
m.usp,
m.description,
m.worktime,
m.proprietor,
m.img,
m.url,
m.servings,
d.name,
c.name,
s.name,
SUM(i.price / i.minamount * r.quantity) as mealPrice
from meals m
join recipe r on m.meal_id = r.meal_id
join ingredients i on i.ingredient_id = r.ingredient_id
join difficulty d on d.difficulty_id = m.difficulty_id
join cat c on c.cat_id = m.cat_id
join social s on s.social_id = m.social_id
GROUP BY m.meal_id,
m.name,
m.usp,
m.description,
m.worktime,
m.proprietor,
m.img,
m.url,
m.servings,
d.name,
c.name,
s.name
Основано на Предыдущая версия Проблемы ОП:
Это оконная функция проблема.В новых версиях MySQL (> = 8.0 ) вы можете легко это сделать.В более старой версии (ваша версия 5.5) мы можем решить ее, используя переменные сеанса .
Попробуйте:
Select m.meal_id,
m.name,
m.usp,
m.description,
m.worktime,
m.proprietor,
m.img,
m.url,
m.servings,
d.name,
c.name,
s.name,
(@sum := @sum + (i.price / i.minamount * r.quantity)) as mealPrice
from meals m
join recipe r on m.meal_id = r.meal_id
join ingredients i on i.ingredient_id = r.ingredient_id
join difficulty d on d.difficulty_id = m.difficulty_id
join cat c on c.cat_id = m.cat_id
join social s on s.social_id = m.social_id
CROSS JOIN (select @sum := 0) AS init
В версии MySQL> = 8.0мы могли бы использовать SUM()
в качестве оконной функции над разделом полного набора результатов.В этом случае запрос будет:
Select m.meal_id,
m.name,
m.usp,
m.description,
m.worktime,
m.proprietor,
m.img,
m.url,
m.servings,
d.name,
c.name,
s.name,
SUM(i.price / i.minamount * r.quantity) OVER() as mealPrice
from meals m
join recipe r on m.meal_id = r.meal_id
join ingredients i on i.ingredient_id = r.ingredient_id
join difficulty d on d.difficulty_id = m.difficulty_id
join cat c on c.cat_id = m.cat_id
join social s on s.social_id = m.social_id