Jump to content
Fórum Script Brasil
  • 0

[Query] Duvida sobre uma consulta


BrunoKNS

Question

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 to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...