0

私はこれらのテーブルを持っています:

コメント

uid
id
pid

ページ

pid
user

ユーザー

id
rank
.
.
.

そしてこのクエリ:

SELECT
   u.*, 
   count(p.id) as 'pages',
   count(c.id) as 'comments' 
FROM 
  `users` u 
   LEFT OUTER JOIN `pages` p ON p.user = u.id
   LEFT OUTER JOIN `comments` c ON c.uid = u.id
GROUP BY u.id

何らかの理由で、ユーザーのコメントが 1 つしかないのに 2 つのコメントが表示されます。

クエリに問題はありますか?

4

1 に答える 1

2

問題は、ユーザーが自分のページ数を掛けてからコメント数を掛けることです。それを修正する1つの方法は次のcount(distinct ..)とおりです。

count(distinct p.id) as 'pages',
count(distinct c.id) as 'comments' 
于 2012-06-24T20:11:38.800 に答える