私は3つのテーブルを持っています:
users(id, account_balance)
grocery(user_id, date, amount_paid)
fishmarket(user_id, date, amount_paid)
fishmarket
とテーブルの両方grocery
で、同じuser_idに対して複数のオカレンスがあり、支払った日付と金額が異なる場合や、特定のユーザーに対して何も含まれていない場合があります。次のクエリを試してみると:
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"
。
しかし、1つのテーブルだけを作成しようとすると、または訪問LEFT JOIN
のいずれかに対して正しい結果が生成されます。grocery
fishmarket
"1", "3", "4"
私はここで何が間違っているのですか?
PostgreSQL9.1を使用しています。