Tengo 3 tablas:Dos SQL IZQUIERDA UNE producir un resultado incorrecto
users(id, account_balance)
grocery(user_id, date, amount_paid)
fishmarket(user_id, date, amount_paid)
Tanto fishmarket
y grocery
tablas pueden tener múltiples ocurrencias de la misma user_id con diferentes fechas y las cantidades pagadas o no tienen nada en absoluto por cualquier usuario dado . cuando intento la siguiente consulta:
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
produce un resultados incorrectos: "1", "12", "12"
.
Pero cuando trato de LEFT JOIN
a una sola tabla, produce un resultado correcto para las visitas grocery
o fishmarket
, que son "1", "3", "4"
.
¿Qué estoy haciendo mal aquí?
Estoy usando PostgreSQL 9.1.
Felicitaciones por la realidad responder a la pregunta no sólo dar una solución. – xception
Código de trabajo en este [enlace] (http://rextester.com/ZFFE32806). – HeyJude
@ErwinBrandstetter He aprendido mucho sobre Postgres de sus publicaciones. ¿Alguna vez has considerado escribir un libro sobre el tema? –