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

+0

IDが2つの異なるテーブルから一致しています。 – tmartin314

+0

私はmysqlのエキスパートではありませんが、 "LIMIT 1"は非常に疑わしいです。 – TToni

答えて

4

WHERE 1は何もしないので、削除することができます。

GROUP BYは、あなたが何かでグループ化していないので削除することもできます。COUNT DISTINCTはテーブル全体にありますか?

Orblingが指摘するように、COUNT DISTINCTは定義によって1つの値しか返さないため、LIMIT 1も削除できます。

それはあなたがしたいことをしていますか?

+1

'LIMIT'もできます。 – Orbling

+0

+1これは、OPが必要とするものです。 –

1

グループ化中のグループはtsuです。 id。それぞれtsuidグループは、定義上1つしか区別されませんtsu。グループ内のidあなたは何を返すと思いますか?

+0

エントリの実際のカウント:23 – tmartin314

+0

Aye、 'WHERE'、' GROUP BY'、 'LIMIT'が行えます。 – Orbling

+0

@whatshakin @ littlegreenの答えをご覧ください。 –

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 
関連する問題