2017-06-14 38 views
0


我可以從server_homes得到home_id計數,但是當我做NATURAL JOIN user_homes(此表有相同的列home_id具有相同的值) 從count結果是多(如果實際結果是2 count 4)。來自特定表JOIN其他表的列的查詢數是否相同?

此代碼我用什麼:

 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` 

     ' : '').' 
     '); 
+0

會一個'計數(不同(HOME_ID))'工作? – cwallenpoole

+0

請參閱https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-查詢 – Strawberry

+0

@cwallenpoole是的,這是工作!!,我花了2天hhhhh大聲笑。再次感謝你。 –

回答

0

所以這裏的問題是,home_id是不是在所有的表是唯一的。我假設將有多個家庭IP端口或多個遠程服務器爲同一個房子。這將意味着您的總行數將爲#server homes + #dupes用戶家庭+ #dupes遠程服務器+ #dupes家庭IP端口。

來解決這個問題的方法是確保你只計算的ID一次:

SELECT COUNT(DISTINCT(`home_id`)) FROM 
    -- Yada yada 
相關問題