我有3个表:
users(id, account_balance)
grocery(user_id, date, amount_paid)
fishmarket(user_id, date, amount_paid)
无论是fishmarket
表还是grocery
表,都可能出现同一用户的多个记录,这些记录具有不同的日期和付款金额,或者对于任何给定的用户根本没有任何记录。
当我尝试以下查询时:
SELECT
t1."id" AS "User ID",
t1.account_balance AS "Account Balance",
count(t2.user_id) AS "# of grocery visits",
count(t3.user_id) AS "# of fishmarket visits"
FROM users t1
LEFT OUTER JOIN grocery t2 ON (t2.user_id=t1."id")
LEFT OUTER JOIN fishmarket t3 ON (t3.user_id=t1."id")
GROUP BY t1.account_balance,t1.id
ORDER BY t1.id
它产生了不正确的结果:"1", "12", "12"
。
但是当我尝试仅向一个表进行LEFT JOIN
时,它会为grocery
或fishmarket
访问生成正确的结果,这些结果是"1", "3", "4"
。
我在这里做错了什么?
我正在使用PostgreSQL 9.1。