Ir para conteúdo

Arquivado

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

Fernando José

Problema para colocar LEFT JOIN em SQL

Recommended Posts

Galera,

Tenho o seguinte SQL funcionando.

SELECT o.*, p.nome AS paciente_nome, p.consultorio AS paciente_medico 
FROM outros_exames o, paciente p 
WHERE o.hemodinamica = 'S' AND p.codigo = o.paciente AND o.data between '2015-01-01' AND '2015-08-01' 
ORDER BY o.codigo

Alguns (poucos) pacientes tem exame na tabela "exames_laboratoriais" também, preciso trazer os resultados deles. Tentei assim, mas deu erro.

SELECT o.*, p.nome AS paciente_nome, p.consultorio AS paciente_medico, l.*
FROM outros_exames o, paciente p 
LEFT JOIN exames_laboratoriais l ON o.paciente = l.paciente
WHERE o.hemodinamica = 'S' AND p.codigo = o.paciente AND o.data between '2015-01-01' AND '2015-08-01' 
ORDER BY o.codigo

Alguém poderia me ajudar?

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque as condições dactabela de exames dentro do ON e não no WHERE.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Motta,

Tentei fazer assim:

SELECT o.*, p.nome AS paciente_nome, p.consultorio AS paciente_medico, l.*
FROM outros_exames o, paciente p 
LEFT JOIN exames_laboratoriais l ON o.paciente = l.paciente AND o.hemodinamica = 'S' AND p.codigo = o.paciente AND o.data between '2015-01-01' AND '2015-08-01' 
ORDER BY o.codigo

Mesmo assim dá erro.

 Mensagem do MySQL: Documentação
#1054 - Coluna 'o.paciente' desconhecida em 'on clause' 

Compartilhar este post


Link para o post
Compartilhar em outros sites
SELECT o.*, p.nome AS paciente_nome, p.consultorio AS paciente_medico, l.*
FROM  paciente p
LEFT JOIN exames_laboratoriais l ON o.paciente = l.paciente 
LEFT JOIN outros_exames o ON o.hemodinamica = 'S' AND p.codigo = o.paciente 
AND o.data between '2015-01-01' AND '2015-08-01'
ORDER BY o.codigo

Creio ser isto aí acima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu faria assim:

SELECT o.*, p.nome AS paciente_nome, p.consultorio AS paciente_medico, l.*
FROM  paciente p
LEFT JOIN outros_exames o ON p.codigo = o.paciente 
LEFT JOIN exames_laboratoriais l ON o.paciente = l.paciente 
WHERE o.hemodinamica = 'S'
AND o.data between '2015-01-01' AND '2015-08-01'
ORDER BY o.codigo

Confira se não dará erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites
SELECT o.*, p.nome AS paciente_nome, p.consultorio AS paciente_medico, l.*
FROM  paciente p
LEFT JOIN exames_laboratoriais l ON o.paciente = l.paciente 
LEFT JOIN outros_exames o ON o.hemodinamica = 'S' AND p.codigo = o.paciente 
AND o.data between '2015-01-01' AND '2015-08-01'
ORDER BY o.codigo

Creio ser isto aí acima.

 

 

Deu erro.

 

Mensagem do MySQL: dot.gif

#1054 - Coluna 'o.paciente' desconhecida em 'on clause'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu faria assim:

 

SELECT o.*, p.nome AS paciente_nome, p.consultorio AS paciente_medico, l.*
FROM  paciente p
LEFT JOIN outros_exames o ON p.codigo = o.paciente 
LEFT JOIN exames_laboratoriais l ON o.paciente = l.paciente 
WHERE o.hemodinamica = 'S'
AND o.data between '2015-01-01' AND '2015-08-01'
ORDER BY o.codigo

Confira se não dará erro?

 

Hugo deu certo. Era isso mesmo.

 

Muito obrigado a todos :)

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.