Mysql 计算分配给每个人的活动

Mysql 计算分配给每个人的活动,mysql,sql,database,Mysql,Sql,Database,我有一个问题,我需要能够计算一个孩子注册要做的活动的数量。目前,我有以下几点: SELECT child_fname, activity_id FROM Child LEFT JOIN Activity ON Activity.ActivityID=activity.activity_id ORDER BY Child.child_fname; 我的桌子是这样的: 子表 孩子的名字 孩子的第二个名字 儿童年龄 活动 活动标识 活动名称 活动价格 儿童活动 儿童身份证 活动标识 我

我有一个问题,我需要能够计算一个孩子注册要做的活动的数量。目前,我有以下几点:

SELECT child_fname, activity_id
FROM Child
LEFT JOIN Activity
ON Activity.ActivityID=activity.activity_id
ORDER BY Child.child_fname;
我的桌子是这样的:

子表

  • 孩子的名字
  • 孩子的第二个名字
  • 儿童年龄
活动

  • 活动标识
  • 活动名称
  • 活动价格
儿童活动

  • 儿童身份证
  • 活动标识

我在找这样的东西

  • [名称][活动数目]
  • 山姆·史密斯5
  • 瑞秋·史密斯4

我尝试使用联接,但我的查询没有更新新数据

使用
内部联接

SELECT Child.child_firstname, COUNT(Activity.activity_id)
FROM Child
INNER JOIN Activity ON Activity.activity_id=ChildActivity.activity_id
INNER JOIN ChildActivity ON ChildActivity.child_id=Child.child_id
ORDER BY Child.child_firstname;
请检查列名和表格。


示例

这就是我认为您想要的

SELECT child_fname as Name, count(activity_id) as `Number of Activities`
FROM Child
LEFT JOIN ChildActivity
ON ChildActivity.child_id=Child.child_id
GROUP BY Child.child_id
ORDER BY COUNT(activity_id) DESC;

关键是您希望将
Child
ChildActivity
合并,并按
Child
分组,这样,对于
Child
中的每个记录,您都可以获得活动计数。

Ah!对不起,是的,我确实有一个child_id,它是child表中的一个主要字段。是的,这个有效!你知道如何按照活动最多的人来分类吗?我尝试通过ChildActivity.activity\u id添加此组;但是它把它们都加在了一起(孩子们),因为有些孩子的名字是一样的。我已经编辑了这个查询,以包含克劳塞萨克·尤克里斯·李尔的订单!这是完美的,我想我正确地将你的答案标记为正确答案。再次非常感谢!:)你能解释一下你最后一句话的意思吗?为什么给定的
JOIN
查询没有“更新新数据”?