将表数据相关并求和为摘要

时间:2014-02-24 01:39:54

标签: mysql sql rdbms

我想从关系树的一端汇总行,另一端是表。是“关联”正确的术语?真的只知道这些条款会帮助我解决这个问题。

我正在使用MySQL并且正在扩展现有的数据库结构 - 尽管如果需要可以重新安排数据。我在使用JOIN创建“过滤”查询方面做得越来越好,而且我确信下一篇文章一旦理解就会直截了当(不会执行大量查询)。

我为这个例子制作了一个简化的模式(和主题!),但这个想法是一样的。

假设有很多DietPlan个,与一堆MenuItems相关,每个MenuItem都有一个ItemType(例如'健康','快' ,'正常'等)在DietPlan的另一边有Person个,每个人存储他们消耗的DailyCalories个,以及另一个表MenuAllocations,其中a Person存储每日摄入量的百分比是MenuItem

作为比例的示例,可能有1000 MenuItems,其中50个与200 DietPlan中的每一个相关联。此外,每个DietPlan可能有10,000 Person个,每个{5} MenuAllocations个不同类型。

Table layout in MySQL Workbench

我想做的事对我来说很复杂。我想为每个DietPlan创建一个信息中心(可能有很多),从Person的{​​{1}}收集数据,并列出每个项目的卡路里数量类型。

数学很简单:DietPlan * tblPerson.dailyCalories。但我希望为tblMenuAllocations.percent中的每个Person为每个DietPlan执行此操作。

我理解从ItemTypeJOIN“过滤”所需的tblItemType,并认为它与此类似:

tblMenuAllocation

对于每个SELECT * FROM tblMenuAllocation INNER JOIN tblPerson on personId = PersonId INNER JOIN tblDietPlan on tblPerson.dietPlanId = tblDietPlan.DietPlanId INNER JOIN tblMenuItem on tblMenuItem.dietPlanId = tblDietPlan.DietPlanId INNER JOIN tblItemTyp on ItemTypeId = itemTypeId WHERE ItemTypeId = 2 感觉就像一个查询,这可能是要排序的tblItemTypePerson数据的 LOT ,并连续多次执行查询感觉我错过了什么。另外,我认为数学可以在查询中处理以求和值,但我从未这样做过。我在哪里可以开始?

编辑:最终结果如下:

MenuAllocation

我愿意接受对查询之外的数据进行一些操作,但 ---------------------------------------------- ItemId | ItemDesc | TotalCalories ---------------------------------------------- 1 Healthy 450,876 2 Fast 1,987,948 3 Vegan 349,123 etc. 的特定PersondailyCalories计算非常重要。某些tblMenuAllocation.percent行可能属于同一个tblMenuAllocation

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找以下主题: Aggregate FunctionsGroup By Modifiers