Eu faria assim: select usu.rowid, usu.nome, sum(q1.rank) as rank from ( select c1.idusuario, count(c1.idusuario) as rank from counteudo1 group by c1.idusuario union all select c2.idusuario, count(c2.idusuario) as rank from counteudo2 group by c2.idusuario union all select c3.idusuario, count(c3.idusuario) as rank from counteudo3 group by c3.idusuario ) q1 join usuarios usu on usu.rowid = q1.idusuario group by usu.rowid, usu.nome order by rank desc limit 10
[]´s Adriano ( count(C1.idusuario) + count(C2.idusuario) + count(C3.idusuario) ) AS RANK FROM usuarios USU LEFT OUTER JOIN conteudo1 C1 ON (USU.rowid = C1.idusuario) LEFT OUTER JOIN conteudo2 C2 ON ( USU.rowid = C2.idusuario ) LEFT OUTER JOIN conteudo3 C3 ON ( USU.rowid = C3.idusuario ) GROUP BY USU.rowid, USU.nome, C1.idusuario, C2.idusuario, C2.idusuario ORDER BY RANK DESC LIMIT 10; 2008/6/25 Wagner Bonfiglio <[EMAIL PROTECTED]>: > Seguinte.... Eu estou tentando fazer uma consulta que retorna o número > de participações de um cliente no meu site... > > Vou abstrair um pouco, mas é mais ou menos isso > > Tenho uma tabela de clientes com as colunas ROWID e NOME... > > Tenho três outras tabelas, cada uma tem ROWID, IDUSUARIO, CONTEUDO.. > Sendo IDUSUARIO chave estrangeira para o ROWID da tabela de cliente... > > Supondo que um cliente pode ter entradas nas três tabelas, em duas, em > apenas uma ou até em nenhuma. > > Gostaria de saber quantas entradas cada usuário tem, somando as > entradas nas 3 tabelas... > > Ou seja, a saída seria algo como: > > NOME (ou ROWID) | COUNT(*) > -----------------------------+----------------- > joao (ou 1) | 97 > mario (ou 5) | 90 > wagner (ou 10) | 38 > > > Bom, acho que deu pra entender a idéia... > > Alguém sabe como consigo fazer isso? > Já tentei usando LEFT OUTER JOIN e não consegui... A consulta que eu fiz > foi: > > SELECT USU.rowid, USU.nome, > ( count(C1.idusuario) + count(C2.idusuario) + > count(C3.idusuario) ) AS RANK > FROM > usuarios USU LEFT OUTER JOIN conteudo1 C1 ON > (USU.rowid = C1.idusuario) > LEFT OUTER JOIN conteudo2 C2 ON ( USU.rowid = C2.idusuario ) > LEFT OUTER JOIN conteudo3 C3 ON ( USU.rowid = C3.idusuario ) > GROUP BY > USU.rowid, USU.nome, C1.idusuario, C2.idusuario, C2.idusuario > ORDER BY RANK DESC > LIMIT 10; > > > Valeu... > Wagner Mariotto Bonfiglio > _______________________________________________ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral