Ir para conteúdo
Fórum Script Brasil
  • 0

[Query] Duvida sobre uma consulta


BrunoKNS

Pergunta

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

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0

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_ESTADO

São Paulo 1

Minas Gerais 2

Rio de Janeiro 3

Objetos Ativos

OBJETO STATUS COD_ESTADO

calculadora 1 1

calculadora 0 1

calculadora 1 2

calculadora 1 2

calculadora 0 3

calculadora 0 3

RESULTADO ESPERADO

ESTADO OBJETO_ATIVO OBJETO_INATIVO

São Paulo 1 1

Minas Gerais 2 0

Rio de Janeiro 0 2

Não sei se ficou claro se precisar explico de uma outra forma.

Obrigado a todos pelo empenho em me ajudar

Link para o comentário
Compartilhar em outros sites

  • 0

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).

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...