Tôi có 3 bảng:Hai SQL LEFT NỐI sản xuất kết quả không chính xác
users(id, account_balance)
grocery(user_id, date, amount_paid)
fishmarket(user_id, date, amount_paid)
Cả fishmarket
và grocery
bảng có thể có nhiều lần xuất hiện cho user_id cùng với các ngày khác nhau và các khoản thanh toán hoặc không có gì ở tất cả cho bất kỳ người dùng nào đó . Khi tôi cố gắng truy vấn sau đây:
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
Nó tạo ra một kết quả không chính xác: "1", "12", "12"
.
Nhưng khi tôi cố gắng LEFT JOIN
chỉ một bảng, nó tạo ra kết quả chính xác cho các chuyến thăm grocery
hoặc fishmarket
, là "1", "3", "4"
.
Tôi đang làm gì sai ở đây?
Tôi đang sử dụng PostgreSQL 9.1.
Chúc mừng thực sự trả lời câu hỏi không chỉ đưa ra một giải pháp. – xception
Mã làm việc trong [link] này (http://rextester.com/ZFFE32806). – HeyJude
@ErwinBrandstetter Tôi đã học được rất nhiều về Postgres từ các bài viết của bạn. Bạn đã bao giờ xem xét việc viết một cuốn sách về chủ đề này chưa? –