Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 子查询中的计数_Mysql_Sql - Fatal编程技术网

Mysql 子查询中的计数

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上直接获得相同的计数。我只是通过家

我有一个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
上直接获得相同的计数。我只是通过
家用连接器\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