我想从关系树的一端汇总行,另一端是表。是“关联”正确的术语?真的只知道这些条款会帮助我解决这个问题。
我正在使用MySQL并且正在扩展现有的数据库结构 - 尽管如果需要可以重新安排数据。我在使用JOIN
创建“过滤”查询方面做得越来越好,而且我确信下一篇文章一旦理解就会直截了当(不会执行大量查询)。
我为这个例子制作了一个简化的模式(和主题!),但这个想法是一样的。
假设有很多DietPlan
个,与一堆MenuItems
相关,每个MenuItem
都有一个ItemType
(例如'健康','快' ,'正常'等)在DietPlan
的另一边有Person
个,每个人存储他们消耗的DailyCalories
个,以及另一个表MenuAllocations
,其中a Person
存储每日摄入量的百分比是MenuItem
。
作为比例的示例,可能有1000 MenuItems
,其中50个与200 DietPlan
中的每一个相关联。此外,每个DietPlan
可能有10,000 Person
个,每个{5} MenuAllocations
个不同类型。
我想做的事对我来说很复杂。我想为每个DietPlan
创建一个信息中心(可能有很多),从Person
的{{1}}收集数据,并列出每个项目的卡路里数量类型。
数学很简单:DietPlan
* tblPerson.dailyCalories
。但我希望为tblMenuAllocations.percent
中的每个Person
为每个DietPlan
执行此操作。
我理解从ItemType
到JOIN
“过滤”所需的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
感觉就像一个查询,这可能是要排序的tblItemType
和Person
数据的 LOT ,并连续多次执行查询感觉我错过了什么。另外,我认为数学可以在查询中处理以求和值,但我从未这样做过。我在哪里可以开始?
编辑:最终结果如下:
MenuAllocation
我愿意接受对查询之外的数据进行一些操作,但 ----------------------------------------------
ItemId | ItemDesc | TotalCalories
----------------------------------------------
1 Healthy 450,876
2 Fast 1,987,948
3 Vegan 349,123
etc.
的特定Person
对dailyCalories
计算非常重要。某些tblMenuAllocation.percent
行可能属于同一个tblMenuAllocation
!