2010-12-08 92 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