BrunoKNS Postado Setembro 9, 2011 Denunciar Share Postado Setembro 9, 2011 O que há de errado nessa Query ?SELECT T.CAMPOG AS ESTADO,COUNT (F.STATUS) AS ATIVO,COUNT (P.STATUS) AS INATIVOFROM TABELA T, TABELA PWHERE F.STATUS = 1AND P.STATUS = 0GROUP BY T.CAMPOGEssa query trás informações inconsistentes, pois acho que multiplica os dados, porem o que eu preciso eu consigo trazer em duas queries diferentes.ExemploSELECT T.ESTADO, COUNT (T.STATUS) AS ATIVOFROM TABELA TWHERE T.STATUS = 1GROUP BY T.ESTADOO que eu preciso é trazer a quantidade de ativos e inativos dos estados é o mesmo campo que preciso calcular os ativos e inativosAgradeço desde já agradeço quem ajudar :blink: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Fernandinha Postado Setembro 9, 2011 Denunciar Share Postado Setembro 9, 2011 Olá Bruno,Veja se colocando um JOIN ajuda:SELECT T.CAMPOG AS ESTADO,COUNT (F.STATUS) AS ATIVO,COUNT (P.STATUS) AS INATIVOFROM TABELA T, join TABELA P on P.id = t.idWHERE F.STATUS = 1AND P.STATUS = 0GROUP BY T.CAMPOG Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 BrunoKNS Postado Setembro 12, 2011 Autor Denunciar Share Postado Setembro 12, 2011 Oi Fernandinha,Fiz exatamente o que indicou porem sem sucesso, essa query não retorna registro. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Setembro 12, 2011 Denunciar Share Postado Setembro 12, 2011 Boa tarde Bruno, Quando você utiliza o COUNT, o sql realiza a contagem do campo que deseja. Quando você agrupa, o sql pega a coluna especificada e começa a realizar a contagem. Vamos supor que você tem um item na tabela. Este item possui vários status. Ao agrupar por item, o sql conta para aquele item, todos os status dele. Perceba que o agrupamento está sendo realizado por item. Caso faça o agrupamento por status, o resultado será bem diferente... Creio que o problema está sendo por causa dos dois COUNT´s. Igual falou, quando faz em selects separados dá certo. Provavelmente o sql está contando, para cada item status a mais. Sendo assim, a soma fica meio "doida". Se der, tente identificar se um item possui mais de um status. Caso prefira, poste um exemplo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 BrunoKNS Postado Setembro 13, 2011 Autor Denunciar Share Postado Setembro 13, 2011 Claro Fulvio, Valeu a explicação.Seguinte o que preciso é um status tem 1 e 0 e preciso contar correlacionado a um registro qtos 1 e qtos 0 ele possui.Estado Estado COD_ESTADOSão Paulo 1Minas Gerais 2Rio de Janeiro 3Objetos Ativos OBJETO STATUS COD_ESTADOcalculadora 1 1calculadora 0 1calculadora 1 2calculadora 1 2calculadora 0 3calculadora 0 3RESULTADO ESPERADO ESTADO OBJETO_ATIVO OBJETO_INATIVOSão Paulo 1 1Minas Gerais 2 0Rio de Janeiro 0 2Não sei se ficou claro se precisar explico de uma outra forma.Obrigado a todos pelo empenho em me ajudar Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Setembro 13, 2011 Denunciar Share Postado Setembro 13, 2011 Boa tarde Bruno, Neste caso não tem como trazer o resultado utilizando apenas um select. você terá que contar os status ativos (agrupando por estado) e depois contar os status desativos (agrupando por estado). Na cláusula where não terá como separar isto. Tentei fazer utilizando o CASE, mas mesmo assim trombei com o problema na cláusula where. Se tirar o where das comparações e colocar dentro do case, é como fazer dois selects (que vai dar na mesma). Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
BrunoKNS
O que há de errado nessa Query ?
SELECT T.CAMPOG AS ESTADO,
COUNT (F.STATUS) AS ATIVO,
COUNT (P.STATUS) AS INATIVO
FROM TABELA T, TABELA P
WHERE F.STATUS = 1
AND P.STATUS = 0
GROUP BY T.CAMPOG
Essa query trás informações inconsistentes, pois acho que multiplica os dados, porem o que eu preciso eu consigo trazer em duas queries diferentes.
Exemplo
SELECT T.ESTADO, COUNT (T.STATUS) AS ATIVO
FROM TABELA T
WHERE T.STATUS = 1
GROUP BY T.ESTADO
O que eu preciso é trazer a quantidade de ativos e inativos dos estados é o mesmo campo que preciso calcular os ativos e inativos
Agradeço desde já agradeço quem ajudar :blink:
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.