ferruge 0 Denunciar post Postado Fevereiro 23, 2011 Bom dia, Pessoal Estou tendo dificuldades com a seguinte query: SELECT DISTINCT u.nome, (SELECT COUNT(id_solicitacao) FROM solicitacoes WHERE id_usuario = u.id AND status = '1') as qtde, (SELECT MAX(DATE(data)) FROM solicitacoes WHERE id_usuario = u.id AND status = '1') AS ultimo FROM usuarios u WHERE EXISTS (SELECT id_solicitacao FROM solicitacoes WHERE id_usuario = u.id AND status = '1') ORDER BY ultimo ASC Está demorando muito pra executar. Acredito que haja alguma forma mais rápida de executar essa consulta.. Alguém pode me ajudar? Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
lucasao 5 Denunciar post Postado Fevereiro 23, 2011 O inner join não ajudaria não? Compartilhar este post Link para o post Compartilhar em outros sites
ferruge 0 Denunciar post Postado Fevereiro 23, 2011 O inner join não ajudaria não? Até ajudaria, acho, mas não consegui usar direito, pq depende dos campos qtde e ultimo pra fazer ordenação.. Não consegui retornar os dados corretamente com o JOIN, a consulta retornou uma linha só, contando todas as solicitações no campo qtde, ao invés de retornar todos os usuários com a qtde de suas solicitações... Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Fevereiro 23, 2011 Não seria isto ? select u.nome,count(s.id_solicitacao),max(s.date(data)) from solicitacoes s,usuarios u where s.id_usuario = u.id and status = '1' group by u.nome order by 1 Compartilhar este post Link para o post Compartilhar em outros sites
lucasao 5 Denunciar post Postado Fevereiro 23, 2011 Veja se esta query ajuda: SELECT DISTINCT u.nome, COUNT(solicitacoes.id_solicitacao) AS qtde, MAX(DATE(DATA) AS ultimo FROM usuarios INNER JOIN solicitacoes ON usuarios.id = solicitacoes.id_solicitacao AND solicitacoes.status = '1' WHERE EXISTS (SELECT id_solicitacao FROM solicitacoes WHERE id_usuario = u.id AND status = '1') ORDER BY ultimo ASC Compartilhar este post Link para o post Compartilhar em outros sites
ferruge 0 Denunciar post Postado Fevereiro 23, 2011 Não seria isto ? select u.nome,count(s.id_solicitacao),max(s.date(data)) from solicitacoes s,usuarios u where s.id_usuario = u.id and status = '1' group by u.nome order by 1 Cara, reduziu em mais de 90% o tempo de execução... Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites