2016-12-16 25 views
0

私は不可能と思われるクエリを作成する必要があるこのアプリケーションで作業しています。Mysql列に基づいてSUMを選択する方法

しかし、私は認める必要がありますが、私は質問に少し錆びています!

とにかく、これらの3つのテーブルがあると仮定することができます:

食事

id name 
-- ---- 
1 meal1 

食品

id name kcal kj 
-- ---- ---- -- 
1 food1 200 200 
2 food2 300 300 

Meal_food

私が選択しようとしているのは、この食事に属するkcal、kj(および他のもの)を含む食事です。の割合です。

私が試したように、私はすでに試したが、私はあなたに私が得ることができる最も近い表示できます

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 

:== 60%キロカロリーのfood1 + 40

  • 総食事のカロリー: meal1 2フード(成分)から成り%キロカロリーfood2
  • 総食事KJ == 60%KJのfood1 + 40%KJのfood2
+1

私はあなたが「割合に基づいて、」何を意味するかわかりません。いくつかのサンプル出力を表示できますか? – shmosel

+0

@shmosel更新します –

答えて

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; 
+0

ホーリーF、どうでしたか?それは正しいようです!イエス様、とてもシンプルです、大きな感謝 –

関連する問題