这是我的查询到目前为止的样子:
SELECT activity_name AS 'Activity', child_gender AS 'Gender',
COUNT(*) AS 'Total'
FROM Child C, Child_Activities D, Activity A
WHERE D.child_id=C.child_id
AND D.activity_id=A.activity_id
GROUP BY A.activity_id;
由于某种原因,activity_type只出现一次只有一个性别。我需要它在每个活动的2行(或2列)上显示两种性别(M& F)。有什么想法吗?
谢谢!
答案 0 :(得分:1)
SELECT activity_name AS 'Activity', child_gender AS 'Gender',
COUNT(*) AS 'Total'
FROM Child C, Child_Activities D, Activity A
WHERE D.child_id=C.child_id
AND D.activity_id=A.activity_id
GROUP BY A.activity_id, child_Gender;
在组中缺少性别:mySQL需要它,否则它假定您不关心性别并随机选择一个。
有关详细信息,请参阅this article 和this article too
具体来自第2篇文章:您可以通过避免不必要的列排序和分组来使用此功能来获得更好的性能。但是,当GROUP BY中未命名的每个非聚合列中的所有值对于每个组都相同时,这非常有用。服务器可以自由选择每个组中的任何值,因此除非它们相同,否则所选的值是不确定的。此外,添加ORDER BY子句不会影响每个组中值的选择。选择值后会对结果集进行排序,而ORDER BY不会影响服务器选择的值。