2010-12-08 121 views
0
$sSql = "SELECT COUNT(DISTINCT `tsu`.`id`) AS `count` 
     FROM `" . $this->_sPrefix . "users` AS `tsu` 
     INNER JOIN `" . $this->_sPrefix . "entries` AS `tse` 
      ON `tsu`.`id`=`tse`.`subscriber_id` 
       AND `tse`.`subscriber_type`='" . BX_DOL_SBS_TYPE_VISITOR . "' 
     WHERE 1 
     GROUP BY `tsu`.`id` 
     LIMIT 1"; 

而不是計算條目,它只返回1.如果我刪除組BY子句,那麼它的作品。我如何修復GROUP BY以使其更好地工作?GROUP BY不工作

+1

你試圖在你的「COUNT」中得到什麼......一個特定用戶ID有多少個用戶? – DRapp 2010-12-08 14:20:10

+0

匹配兩個不同表中的id。 – tmartin314 2010-12-08 14:20:53

+0

我不是mysql的專家,但那個「極限1」的東西看起來對我很可疑。 – TToni 2010-12-08 14:20:55

回答

4

WHERE 1什麼都不做,所以它可以被刪除。

GROUP BY也可以刪除,因爲你沒有任何分組,你的COUNT DISTINCT是在整個表上,不是?

正如Orbling指出的那樣,LIMIT 1也可以被刪除,因爲COUNT DISTINCT根據定義只返回一個值。

它做你想要的東西嗎?

1

您正在按tsu分組。 id

每個人tsu。根據定義,id組將只有1個不同的tsu。組中的id你期望它返回什麼?

0
SELECT u.id, COUNT(e.id) 
FROM users AS u 
INNER JOIN entries AS e ON e.subscriber_id = u.id 
WHERE e.subscriber_type = 'BX_DOL_SBS_TYPE_VISITOR' 
GROUP BY u.id