CONTAR REGISTROS COM SQL
Bom dia pessoal, quanto tempo não passava por aqui.
Mas vamos lá.
Me solicitaram a montagem de um relatório em sistema de analises clinicas que não era atualizado a uns 4 anos.
Este sistema grava o resultado dos exames em várias tabelas, e o pessoal precisa saber quem fez exame e a quantidade de exames realizados por paciente.
Então montei minha SQL da seguinte maneira:
Porém neste caso ele esta desprezando os registros da tabela URINA, contanto somente os registros das tabelas RESULTADOS1 e RESULTADOS2.
Alguém poderia me ajudar a identificar o erro? Ou se existe alguma outra forma dele contar estes registros?
Mas vamos lá.
Me solicitaram a montagem de um relatório em sistema de analises clinicas que não era atualizado a uns 4 anos.
Este sistema grava o resultado dos exames em várias tabelas, e o pessoal precisa saber quem fez exame e a quantidade de exames realizados por paciente.
Então montei minha SQL da seguinte maneira:
Citação:SQL = [Ô]SELECT DISTINCT A.NOME_PACIENTE, COUNT(A.ID_PACIENTE) AS SOMATOTAL from (((CAD_PACIENTE A FULL OUTER JOIN RESULTADOS1 B ON A.ID_PACIENTE=B.COD_PACIENTE)FULL OUTER JOIN RESULTADOS2 C ON A.ID_PACIENTE=C.COD_PACIENTE) FULL OUTER JOIN URINA D ON A.ID_PACIENTE=D.COD_PACIENTE)[Ô]
SQL = SQL + [Ô] GROUP BY A.NOME_PACIENTE[Ô]
Porém neste caso ele esta desprezando os registros da tabela URINA, contanto somente os registros das tabelas RESULTADOS1 e RESULTADOS2.
Alguém poderia me ajudar a identificar o erro? Ou se existe alguma outra forma dele contar estes registros?
Eu faria um Union All entre as tabelas de Resultado e Urina... depois faria a junção com a tabela de Pacientes.
Pela sua lógica, acredito que até daria certo... se não houvesse interseções entre as tabelas de Resultado e Urina (O mesmo paciente não tenha feito as duas). Do jeito que tá, acho que ele tá contando apenas uma vez os dois registros. é bem provável que a diferença esteja aÃ.
Pela sua lógica, acredito que até daria certo... se não houvesse interseções entre as tabelas de Resultado e Urina (O mesmo paciente não tenha feito as duas). Do jeito que tá, acho que ele tá contando apenas uma vez os dois registros. é bem provável que a diferença esteja aÃ.
Obrigado pelo resposta, também creio que seja isto que está acontecendo.
Se eu usar o INNER JOIN ele até conta certo, mas para isto o paciente teria que estar em todas as tabelas.
Vou tentar com o Union All.
Obrigado pela dica.
Se eu usar o INNER JOIN ele até conta certo, mas para isto o paciente teria que estar em todas as tabelas.
Vou tentar com o Union All.
Obrigado pela dica.
Boa tarde.
Após a dica do colega acima, comecei e trabalhar a consulta e não obtive nenhum resultado satisfatório.
Quando utilizo o Union All, ele coloca tipo os somatório dos exames na mesma coluna do nome dos pacientes.
A instrução a seguir foi a mais próxima de um resultado, pois esta contanto certo porem com o problema que eu descrevi anteriormente.
Alguém saberia me dizer onde estou errando? Ou se existe alguma outra forma de contar quantos exames cada paciente fez em mais de uma tabela?
Abraços...
Após a dica do colega acima, comecei e trabalhar a consulta e não obtive nenhum resultado satisfatório.
Quando utilizo o Union All, ele coloca tipo os somatório dos exames na mesma coluna do nome dos pacientes.
A instrução a seguir foi a mais próxima de um resultado, pois esta contanto certo porem com o problema que eu descrevi anteriormente.
Citação:SQL = SQL + [Ô]SELECT DISTINCT A.NOME_PACIENTE from (CAD_PACIENTE A FULL OUTER JOIN RESULTADOS1 B ON A.ID_PACIENTE=B.COD_PACIENTE)[Ô]
SQL = SQL + [Ô]UNION [Ô]
SQL = SQL + [Ô] SELECT COUNT(*) AS SOMATOTAL from (RESULTADOS1 B FULL OUTER JOIN RESULTADOS2 C ON B.COD_PACIENTE=C.COD_PACIENTE) GROUP BY B.COD_PACIENTE[Ô]
Alguém saberia me dizer onde estou errando? Ou se existe alguma outra forma de contar quantos exames cada paciente fez em mais de uma tabela?
Abraços...
Tópico encerrado , respostas não são mais permitidas