Ich habe 3 Tabellen:Zwei SQL LEFT JOINS falsches Ergebnis erzeugen
users(id, account_balance)
grocery(user_id, date, amount_paid)
fishmarket(user_id, date, amount_paid)
Sowohl fishmarket
und grocery
Tabellen können mehrere Vorkommen für die gleiche User_id mit unterschiedlichen Daten und Beträge bezahlt haben oder gar nichts für einen bestimmten Benutzer . Wenn ich versuche, die folgende Abfrage:
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
es sich um eine falsche Ergebnisse: "1", "12", "12"
.
Aber wenn ich zu LEFT JOIN
zu nur einer Tabelle versuche, produziert es ein korrektes Ergebnis für entweder grocery
oder fishmarket
Besuche, die "1", "3", "4"
sind.
Was mache ich hier falsch?
Ich benutze PostgreSQL 9.1.
Wir gratulieren tatsächlich Beantwortung der Frage nicht nur geben, eine Lösung. – xception
Arbeitscode in diesem [link] (http://rexttester.com/ZFFE32806). – HeyJude
@ErwinBrandstetter Ich habe so viel über Postgres von deinen Posts gelernt. Hast du jemals darüber nachgedacht, ein Buch zu diesem Thema zu schreiben? –