2

調査に回答したユーザーの数を知る必要があります。しかし、彼らは1回以上応答することができます(私の場合、最大2回)。

したがって、2つのテーブルがあります:fs_usersfs_surveys

fs_users:
  ID  | Name
  1     David
  2     John

fs_surveys:
  ID  | ID_User | Selected_Answer
  1     1         A
  2     1         C
  3     2         A

アンケートに回答したユーザーの数を視覚的に数えると、数えることができます2(DavidとJohn)。質問することで、この人々が誰に反応したかを知ることができます。好き:

SELECT 
  fs_users.ID, 
  fs_users.Name
FROM fs_users

INNER JOIN fs_surveys
  ON fs_surveys.ID_User = fs_users.ID

GROUP BY 
  fs_users.ID

基本的に、fs_users上記と同じデータが返されます。だから、ここまでは元気です。問題は、誰のユーザーではなく、何人のユーザーが必要というCOUNT() ことです。

を次のようなものに変更した場合SELECT

SELECT
  COUNT(*)
...

私はこれを受け取ります:

result:
  COUNT(*) | INSTEAD_OF
  3          2

では、どうすればこの問題を解決できますか?さよなら!

4

4 に答える 4

6
SELECT COUNT(DISTINCT ID_User) FROM fs_surveys

sqlfiddleでそれを参照してください。

于 2012-08-30T14:22:16.420 に答える
4

使用するだけDISTINCTです:

SELECT COUNT(DISTINCT ID) FROM fs_users;
于 2012-08-30T14:23:05.873 に答える
4

COUNT(distinct columnName)の代わりに使用してくださいCOUNT(*)

于 2012-08-30T14:23:32.000 に答える
2

一意の値をカウントするには、 COUNT(DISTINCT fs_users.ID)を使用するだけです。

于 2012-08-30T14:25:41.390 に答える