Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

dummy.php

Contar valores idênticos em colunas diferentes, mas na mesma linha

Recommended Posts

Pessoal boa tarde a todos,

 

Preciso contar valores idênticos em colunas diferentes, mas na mesma linha, alguém sabe como fazer isso?

 

 

Explicação (motivo)

Criar um relatório para um projeto social de uma ONG que deveria contar os dentes cariados, ausentes e hígidos (bons) de alunos carentes de escolas publicas. Na tabela do banco que guarda a situação dos dentes tenho uma coluna id e uma coluna para cada dente (dente1, dente2) e os valores destas colunas podem ser C, A ou H. Como mostra a imagem:

 

dentes.jpg

 

Eu preciso no relatório contar quantos dentes cariados, ausentes e higidos de cada aluno separadamente. Tentei fazer um count com case:

 

Count(Case When MO_FICHA_SITUACAO.fcs_11 = 'A' Then 'ausente'
   When MO_FICHA_SITUACAO.fcs_12 = 'A' Then 'ausente'
   End) As ausente,

 

Mas não deu retorna sempre o valor 1. Tentei também um subselect mas ai retorna a soma de todas os alunos ao invés de me retornar a soma só de um aluno

 

SQL

Select
 (select COUNT(MO_FICHA_SITUACAO.fcs_11)+COUNT(MO_FICHA_SITUACAO.fcs_12)+COUNT(MO_FICHA_SITUACAO.fcs_13)+COUNT(MO_FICHA_SITUACAO.fcs_14) from MO_FICHA_SITUACAO where MO_FICHA_SITUACAO.fcs_11='H' OR MO_FICHA_SITUACAO.fcs_12='H' OR MO_FICHA_SITUACAO.fcs_13='H' OR MO_FICHA_SITUACAO.fcs_14='H') As higido,
 (select COUNT(MO_FICHA_SITUACAO.fcs_11)+COUNT(MO_FICHA_SITUACAO.fcs_12)+COUNT(MO_FICHA_SITUACAO.fcs_13)+COUNT(MO_FICHA_SITUACAO.fcs_14) from MO_FICHA_SITUACAO where MO_FICHA_SITUACAO.fcs_11='C' OR MO_FICHA_SITUACAO.fcs_12='C' OR MO_FICHA_SITUACAO.fcs_13='C' OR MO_FICHA_SITUACAO.fcs_14='C') As cariado,
 MO_ESCOLA.ID,
 MO_ESCOLA.NOME,
 MO_ALUNO.ID,
 MO_ALUNO.NOME,
From
 MO_FICHA_SITUACAO, MO_ESCOLA, MO_ALUNO
WHERE MO_FICHA_SITUACAO.ALUNO_ID=MO_ALUNO.ID AND MO_ALUNO.ID_ESCOLA=MO_ESCOLA.ID

 

Desde já agradeço :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

1º por dentes ...

 

select fcs_id,
      (
      (case when fcs_1 = 'A' Then 1 else 0 end) +
      (case when fcs_2 = 'A' Then 1 else 0 end) +
      ...
      (case when fcs_32 = 'A' Then 1 else 0 end) 
      ) ausentes, 
     (
      (case when fcs_1 = 'C' Then 1 else 0 end) +
      (case when fcs_2 = 'C' Then 1 else 0 end) +
      ...
      (case when fcs_32 = 'C' Then 1 else 0 end) 
      ) cariados,
      (
      (case when fcs_1 = 'H' Then 1 else 0 end) +
      (case when fcs_2 = 'H' Then 1 else 0 end) +
      ...
      (case when fcs_32 = 'H' Then 1 else 0 end) 
      ) higidos
FROM ....

 

Com está básica dá para pensar quaisquer outras queries, talvez até uma view.

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

 

32 Dentes Titãs

Eu nunca mais vou dizer o que realmente penso |

Eu nunca mais vou dizer o que realmente sinto |

 

 

Eu juro Eu juro (por Deus)

 

 

Não confio em ninguém

Não confio em ninguém

Não confio em ninguém com mais de 30

Não confio em ninguém com 32 Dentes

 

Meu pai um dia me pediu para que eu nunca mentisse

mas ele se esqueceu de dizer a verdade

 

 

http://www.vagalume.com.br/titas/32-dentes.html#ixzz210bybBa9

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.