次の SQL ステートメントを使用して、COUNT()
2 つの異なるテーブルの行を取得しています。唯一の問題は、結果payment_count
とupload_count
結果が常に同じ値を返すことです。
COUNT()
テーブルからのみの場合payments
、カウントは正確です。同じステートメントで両方のテーブルからカウントした場合にのみ、COUNT()
for both が と同じCOUNT()
になりupload_count
ます。それが理にかなっていることを願っています。カウントが個別になるようにするにはどうすればよいですか?
SELECT
u.id,
u.name,
COUNT(p.id) as payment_count,
COUNT(b.id) as upload_count
FROM users as u
INNER JOIN payments as p
ON u.id = p.user_id
LEFT OUTER JOIN orders as o
ON u.id = o.user_id
AND o.order_status = 1
LEFT OUTER JOIN uploads as b
ON u.id = b.user_id
WHERE u.package != 1
AND o.id IS NULL
GROUP BY u.id
HAVING COUNT(p.id) >= 6
ORDER BY RAND()
LIMIT 10