Ir para conteúdo

POWERED BY:

Arquivado

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

Marisa Lima

Select com passagem de variaveis

Recommended Posts

Boas.

 

Tenho o seguinte select:

SELECT distinct cf.id, cf.competencia,cf.indicador,acfm.justificacao_colaborador,nivel.descricao, acfm.justificacao_chefe,acfm.id_avaliacao_chefe_nivel FROM competencia_funcional cf left join avaliacao_competencia_funcional_momento acfm ON cf.id=acfm.id_competencia_funcional left join momento_avaliacao_colaborador mac ON acfm.id_momento_avaliacao_colaborador=mac.id left join momento_avaliacao ma ON mac.id_momento_avaliacao=ma.id left join nivel ON acfm.id_nivel_esperado=nivel.id where mac.id_colaborador='$id' and ma.ano='$ano'

Que Está dadno o seguinte erro:

Erro no MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '68'' and ma.ano='2012'' at line 8

 

Mas isto só acontece no servidor linux. Se eu tiver a minha aplicação em windows funciona correctamente, já procurei a sintaxe mas ainda não consegui perceber o que está mal.

Se me poderem ajudar a detectar o erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia,

 

O campo id_colaborador é de que tipo?

 

Está escrito da maneira correta (maiúsculas e minúsculas) ?

 

Testou com outros valores de variáveis? Sem aspas? Com outros campos além deste?

 

Verifique os pontos acima, a disposição, abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É um inteiro que vem de uma varivel session. Está escrito correctamente.

Já testei com aspa, sem aspa, com pontos, barras e não funciona, verifiquei com todas as sintaxes que aparecem na net mas nenhuma funcionou. Qual é a sinatxe correcta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o campo é inteiro no banco, não precisa de aspas, devia estar funcionando.

 

Faça o teste com outros campos do tipo inteiro, veja se funciona, observe as diferenças.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já testei de várias formas e nenhuma funciona, sem pelicas dá o seguinte erro:

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '37'.\' and ma.ano='\.'2012'.\'' at line 7

 

No inicio funcionava e de um momento para o outro deixou de dar. Se colocar a query no mysql funciona. O que poderá ser?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia,

 

Não entendi aquelas barrinhas. Se o campo for inteiro elas não devem estar ali.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já funciona, criei a query de novo e começou a dar. Agora tenho uma duvida.

 

Preciso de um select que envolve várias tabelas sendo que uma delas tem 2 chaves estrangeiras de outra, isto é tenho a tabela A com FK1 e FK2 da TABELA B onde estas são PK. O que eu preciso é de ir buscar a descriçao á tabela B para a FK1 e para a FK2. Para uma eu sei como se faz a junção das tabelas, mas para a segunda não sei como se faz. Será que me pode ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

As chaves estrangeiras são uma chave única ou cada uma é independente da outra?

 

Mais especificamente falando, você quer fazer um JOIN apenas com a outra tabela ou quer fazer dois? Se for apenas um JOIN usando as duas chaves é só especificar elas no ON :

 

SELECT * FROM tabelaPrincipal tp
JOIN tabelaFilha tf ON (tp.idTF = tf.idTF AND tp.nomeTF = tf.nomeTF)

Se você precisa fazer dois JOINs numa mesa tabela, basta utilizar um alias diferente pra cada uma:

 

SELECT * FROM tabelaPrincipal tp
JOIN tabelaFilha tf1 ON tp.idTF   = tf1.idTF
JOIN tabelaFilha tf2 ON tp.nomeTF = tf2.nomeTF

É isso que você precisa? Caso não seja peço que dê um exemplo com a estrutura das tabelas que usa e o que necessita.

 

Espero que ajude, abraço.

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.