GROUP BY не работает - PullRequest
       23

GROUP BY не работает

0 голосов
/ 08 декабря 2010
$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. Если я удалю предложение group BY, то это сработает. Как я могу исправить GROUP BY, чтобы он работал лучше?

Ответы [ 3 ]

4 голосов
/ 08 декабря 2010

WHERE 1 ничего не делает, поэтому его можно удалить.

Также можно удалить GROUP BY, поскольку вы ничего не группируете, ваш COUNT DISTINCT находится на всей таблице, нет?

Как указывает Орблинг, LIMIT 1 также можно удалить, потому что COUNT DISTINCT возвращает только одно значение по определению.

Делает ли он тогда то, что вам нужно?

1 голос
/ 08 декабря 2010

Вы группируете по tsu. id.

Каждая отдельная группа tsu. id по определению будет иметь только 1 отдельную tsu. id группу, что вы ожидаете от нее вернуть?

0 голосов
/ 08 декабря 2010
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...