在我需要的地方使用这个应用程序进行一个似乎不可能的查询(经过几个小时的尝试和尝试)。
虽然,我不得不承认,我对查询有点生疏!
无论如何,我们假设有这三个表:
膳食
id name
-- ----
1 meal1
食品
id name kcal kj
-- ---- ---- --
1 food1 200 200
2 food2 300 300
Meal_food
m_id f_id percentage_food_in_meal
---- ---- ----
1 1 0.60
1 2 0.40
我想要选择的是:一顿饭,kcal(和其他人)属于这顿饭基于的百分比。
正如我尝试过的那样,我已经尝试过,但我可以告诉你我能得到的最接近的地方:
SELECT
m.*,
SUM(f.kj), -- <- should be based on the percentage
SUM(f.kcal) -- <- should be based on the percentage
FROM
meal m,
meal_food mf,
food_nl f
WHERE
m.id = mf.meal_id
AND
f.id = mf.food_id
GROUP BY
m.id;
正如评论所说:基于百分比的缺失。 尝试了内连接,外连接,交叉连接,子查询,所以我想知道它是否可能。
希望我关于我想要获得的内容的问题很明确,如果不是,我会很乐意再次尝试!
更新 例如作为输出:
id name kcal kj
-- ---- ---- ---
1 meal1 240 240
澄清: meal1由2种食物(成分)组成:
答案 0 :(得分:1)
未经测试:
SELECT
m.id, MIN(m.name) AS meal_name,
SUM(f.kj*mf.percentage_food_in_meal),
SUM(f.kcal*percentage_food_in_meal)
FROM meal m
INNER JOIN meal_food mf
ON m.id = mf.meal_id
INNER JOIN food_nl f
ON f.id = mf.food_id
GROUP BY m.id;