У меня есть 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"
.
Но когда я пытаюсь LEFT JOIN
только в одну таблицу, он дает правильные результаты для посещений grocery
или fishmarket
, которые "1", "3", "4"
.
Что я здесь делаю неправильно?
Я использую PostgreSQL 9.1.