特定表JOIN中特定列的查询计数其他表有相同的列吗?

时间:2017-06-14 19:57:48

标签: mysql join


我可以从home_id获得server_homes的计数,但是当我创建NATURAL JOIN user_homes时(此表具有相同的列home_idcount的结果为多个(如果实际结果为2,则count为4)。

我使用的代码:

        return $this->resultQuery('SELECT COUNT(home_id) AS total FROM `'.$this->table_prefix.'server_homes`

        '.($search_field ? '
        NATURAL JOIN `'.$this->table_prefix.'user_homes`
        NATURAL JOIN `'.$this->table_prefix.'remote_servers` 
        NATURAL JOIN `'.$this->table_prefix.'home_ip_ports`

        ' : '').'
        ');

1 个答案:

答案 0 :(得分:0)

所以这里的问题是home_id在所有表中都不是唯一的。我假设在同一栋房子里会有多个家庭IP端口或多个远程服务器。这意味着您的总行数将是#server homes + #dupes user homes + #dupes remote servers + #dupes home IP ports。

解决这个问题的方法是确保你只计算一次ID:

SELECT COUNT( DISTINCT( `home_id` ) ) FROM 
   -- Yada yada