下午好,
我一直在尝试集思广益,以实现此目的,但到目前为止,我还没有想到任何可靠的方法。作为最后的选择,我决定问一些关于堆栈溢出的聪明人,以提供一些有关如何执行此操作的建议。开始之前,我正在使用SMSS 18和Microsoft SQL Server 2017。
首先,我将向您展示我想通过此实现的骨干数据库:
是否可以使用外键填充外表中的列?例如。使用X作为主键,使用Y作为外键填充Z列(在另一个表中)
如何将其包装起来并使用SMSS创建自动执行此操作的外键?
是否可以在MSSQL中进行求和?我想在最终膳食表中获取卡路里的总和,以便以后可以在Tableau中使用该数据进行比较并创建该数据的表示形式。我应该让tableau这样做还是可以使用MSSQL做到这一点?
我现在到处都是,我知道我的问题似乎令人生畏,但是如果您有任何遗漏,我很乐意提供更多信息。
我已经计划和设计了数据流-但是我不知道如何在MSSQL中准确实现此体系结构。
谢谢。
答案 0 :(得分:0)
好吧,我想这并不是您问题的答案...
我希望这样的数据模型:
然后每餐您将计算:
select mi.meal_id, sum(i.calories * mi.amount), sum(i.fat * mi.amount)
from ingredient
join meal_ingredient mi on mi.ingredient_id = i.ingredient_id
group by mi.meal_id;
对于进餐的人:
查询人员的日常消费:
select
pm.person_id, pm.consume_date,
sum(i.calories * mi.amount * pm.consume_amount),
sum(i.fat * mi.amount * pm.consume_amount)
from ingredient
join meal_ingredient mi on mi.ingredient_id = i.ingredient_id
join person_meal pm on pm.meal_id, mi.meal_id
group by pm.person_id, pm.consume_date
order by pm.person_id, pm.consume_date;
我们不会多余地存储结果,因为我们总是可以编写查询以从表中获取结果。毕竟,这就是SQL的意义。