1

フィールドuserID、age、genderを含むテーブルusersがあり、フィールド(id、userID、clickID)を含むclick_infoとして別のテーブル名があります。click_infoテーブルのエントリは次のとおりです

id       userID      dubID

1          1           2

2          1           2

3          1           2

4          2           2

5          2           2

6          3           2

7          4           2

今、dubID 2 をクリックしたすべてのユーザーの平均年齢が必要で、次のクエリを使用しています。

SELECT DISTINCT `dub_clickinfo`.`userID`, `users`.`age` AS `average`, `users`.*
FROM `dub_clickinfo` INNER JOIN `users` ON dub_clickinfo.userId = users.userID 
WHERE (dubID=2)

上記のクエリでは、重複するユーザー ID が含まれる (ユーザー ID 1 が 3 回、2 が 2 回含まれるなど) という不正確な平均が得られます。

クエリを提案してください

前もって感謝します !!

4

2 に答える 2

0

試してみてください。1対多の関係があるため、内部ではなく左結合を使用し、ユーザーのIDにグループ関数を適用する必要があります

SELECT dub_clickinfo.userID, users.age AS average, users.* FROM dub_clickinfo 
LEFT JOIN users ON dub_clickinfo.userId = users.userID WHERE (dubID=2)
GROUP BY users.userID
于 2013-11-08T09:47:07.480 に答える