Mysql 子查询中的计数
我有一个html表格,我想在其中显示Mysql 子查询中的计数,mysql,sql,Mysql,Sql,我有一个html表格,我想在其中显示cht\u name,count\u hoh和count\u成员。我可以在count\u hoh中获得计数的结果,因为我在house\u tbl上有相同的cht\u id字段,在tbl\u cht\u members上有相同的主表字段。我很难获得count\u成员的计数,这是一个表tbl\u house\u members,它在house\u tbl上有相同的字段,但没有一个字段cht\u id,我可以在count\u hoh上直接获得相同的计数。我只是通过家
cht\u name
,count\u hoh
和count\u成员
。我可以在count\u hoh
中获得计数的结果,因为我在house\u tbl
上有相同的cht\u id
字段,在tbl\u cht\u members
上有相同的主表字段。我很难获得count\u成员的计数,这是一个表tbl\u house\u members
,它在house\u tbl
上有相同的字段,但没有一个字段cht\u id
,我可以在count\u hoh
上直接获得相同的计数。我只是通过家用连接器\u id
链接它们
SELECT cht_id as cht, name,
(SELECT household_connector_id as hoh,
COUNT(*)
FROM household_tbl
WHERE cht_id = cht) as count_hoh,
(SELECT COUNT(*)
FROM tbl_household_members
WHERE household_connector_id = hoh) as count_members
FROM tbl_cht_members
GROUP BY cht_id
试试这个疯狂的猜测;)
您可能需要修复一些字段/表名和/或使用DISTINCT
,但这一概念在IMO上会起作用因为家庭已经有了适当的关系,您可以加入它并按关系(cht_id)分组,并获得您的计数
但是由于members表具有二级关系,并且您需要另一个求和,因此您必须“预聚合”它,并通过您的关联表(househouse_tbl)公开该关系
另请注意:它确实有助于组织表的命名。你有“tbl”作为前修复和后修复-非常混乱。事实上,我可能会完全忽略它。您可以通过绘制一些表格图表或发布相关表格的模式来更好地解释您的问题
SELECT
tbl_cht_members.cht_id as cht, tbl_cht_members.name,
COUNT(household_tbl.cht_id) AS count_hoh,
COUNT(tbl_household_members.household_connector_id) AS count_members
FROM
tbl_cht_members LEFT JOIN household_tbl
ON tbl_cht_members.cht_id = household_tbl.cht_id
LEFT JOIN tbl_household_members
ON household_tbl.household_connector_id = tbl_household_members.household_connector_id
SELECT cht_id as cht,
name,
count(*) as households_cnt,
members.cnt as member_cnt
FROM tbl_cht_members cht
LEFT JOIN household_tbl households
ON households.cht_id = cht.cht_id
LEFT JOIN (SELECT ht.cht_id, count(*) as cnt
FROM tbl_household_members thm
JOIN household_tbl ht
ON thm.household_connector_id = ht.household_connector_id
GROUP BY thm.cht_id) members
ON members.cht_id = cht.cht_id
GROUP BY cht.cht_id, name, members.cnt