我已经更改了数据库结构,以使其更适合将来使用。现在,我在使用新的选择查询时遇到了麻烦。
我有一个称为活动的表,该表具有活动列表以及该活动每分钟值得多少步。该表的结构如下:
Activities
id act_name act_steps
12 Boxing 250
14 Karate 300
17 Yoga 89
我还有另一个称为距离的表,其结构如下:
Distance
id dist_activity_id dist_activity_duration member_id
1 12 60 12
2 14 90 12
3 17 30 12
我有一个查询,该查询将求和并生成距离表中所有活动的总计
SELECT ROUND(SUM(act_steps * dist_activity_duration / 2000),2) AS total_miles
FROM distance,
activities
WHERE activities.id = distance.dist_activity_id
这很好。
为了将来进行验证,以防万一活动的步骤数发生了变化,我设置了一个名为steps的表,其结构如下:
Steps
id activity_steps
1 6
2 250
3 300
4 89
然后我更新了活动表,删除了act_steps列并将其替换为steps_id,因此现在看起来像这样:
Updated activities
id act_name steps_id
12 Boxing 2
14 Karate 3
17 Yoga 4
我不确定如何创建选择命令以使用新结构获取SUM。
有人可以帮我吗?
谢谢
韦恩
答案 0 :(得分:1)
学习使用正确的JOIN
语法!您的查询应类似于:
SELECT ROUND(SUM(a.act_steps * d.dist_activity_duration / 2000), 2) AS total_miles
FROM distance d JOIN
activities a
ON a.id = d.dist_activity_id;
如果您需要查找步骤,请添加另一个JOIN
:
SELECT ROUND(SUM(s.activity_steps * d.dist_activity_duration / 2000), 2) AS total_miles
FROM distance d JOIN
activities a
ON a.id = d.dist_activity_id JOIN
steps s
ON s.id = a.steps_id;