Mateus, Cuidado ao montar as combinações, há repetições na sua consulta. Faltou também NOT EXISTS nas tabelas que não sofreram INNER JOIN:
-- com B sem C SELECT "campoA", "campoB", null as c FROM a INNER JOIN b ON (a.id= b.id) WHERE NOT EXISTS (SELECT 1 FROM c WHERE a.id= c.id) UNION all -- sem B sem C SELECT "campoA", null as b, null as c FROM a WHERE NOT EXISTS (SELECT 1 FROM b WHERE a.id= b.id) AND NOT EXISTS (SELECT 1 FROM c WHERE a.id= c.id) UNION all -- sem B com C SELECT "campoA", null as b, "campoC" FROM a INNER JOIN c ON (a.id= c.id) WHERE NOT EXISTS (SELECT 1 FROM b WHERE a.id= b.id) UNION all -- com B com C SELECT "campoA", "campoB", "campoC" as c FROM a INNER JOIN b ON (a.id= b.id) INNER JOIN c ON (a.id= c.id) Mozart ------ Original Message ------ > From: mateusgra <[email protected]> > Subject: Re: [pgbr-geral] Otimizar consulta com LEFT JOIN > > Seria assim: > > SELECT "campoA", "campoB", null as c FROM a INNER JOIN b ON (a.id= b.id) > UNION all > SELECT "campoA", null as b, null as c FROM a WHERE NOT EXISTS (SELECT 1 > FROM b WHERE a.id= b.id) > UNION all > SELECT "campoA", null as b, "campoC" FROM a INNER JOIN c ON (a.id= c.id) > UNION all > SELECT "campoA", null as b, null as c FROM a WHERE NOT EXISTS (SELECT 1 > FROM c WHERE a.id= c.id) > > Ocorreu duas linhas por registro. _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
