Ir para conteúdo

POWERED BY:

Arquivado

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

eduardocintra

Problema com MYSQL

Recommended Posts

Boa noite, estou com o seguinte problema:

 

Tenho as seguites tabelas no banco de dados:

 

Funcionarios

Id | nome | funcao | etc.....

 

Acao

Id | nome_acao | responsavel | supervisor | lider1 | lider2

 

Obs.: os campos “responsavel, supervisor, lider1, lider2” são do tipo integer, ou seja os Ids do funcionarios.

 

Eu preciso exibir em uma tabela da seguinte maneira:

 

Nome da Ação | Responsavel pela ação | Supervisor da ação |Lider1 | Lider2

 

Ai vem o problema, eu preciso do nome do responsavel o nome do supervisor o nome do lider1 o nome do lider2, e na tabela só tem os ids, como ligar as tabelas?

Eu fiz um código e funciono, porém eu não cosigo filtrar na clausula where pois utilizei apelidos para as tabelas, dá o seguinte erro:

 

Unknown column nome_responsavel in 'where clause'

 

 

SELECT DISTINCT 
acao.id AS idacao,
acao.nome AS nome_acao,

(@id_responsavel:=acao.responsavel) AS id_responsavel,

(@id_supervisor:=acao.supervisor) AS id_supervisor,

(@id_lider1:=acao.lider1) AS id_lider1,

(@id_lider2:=acao.lider2) AS id_lider2,

(SELECT DISTINCT  func.nome AS nome FROM funcionarios func, acao ac WHERE func.id = acao.responsavel AND acao.responsavel = @id_responsavel) AS nome_responsavel,

(SELECT DISTINCT  func.nome AS nome FROM funcionarios func, acao ac WHERE func.id = acao.supervisor AND acao.supervisor = @id_supervisor) AS nome_supervisor,

(SELECT DISTINCT  func.nome AS nome FROM funcionarios func, acao ac WHERE func.id = acao.lider1 AND acao.lider1 = @id_lider1) AS nome_lider1,

(SELECT DISTINCT  func.nome AS nome FROM funcionarios func, acao ac WHERE func.id = acao.lider2 AND acao.lider2 = @id_lider2) AS nome_lider2

FROM acao acao, funcionarios funcionarios WHERE nome_responsavel LIKE '%$nome%' 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eduardo,

boa tarde.

 

acho a query para seu problema é +/- essa:

 

SELECT DISTINCT

A.ID AS IDACAO,

A.NOME AS NOME_ACAO,

(

SELECT F.NOME FROM FUNCIONARIOS F

WHERE A.RESPONSAVEL = F.ID

) AS RESPONSAVEL,

 

(

SELECT F.NOME FROM FUNCIONARIOS F

WHERE A.SUPERVISOR = F.ID

) AS SUPERVISOR,

 

(

SELECT F.NOME FROM FUNCIONARIOS F

WHERE A.LIDER1 = F.ID

) AS LIDER1,

 

(

SELECT F.NOME FROM FUNCIONARIOS F

WHERE A.LIDER2 = F.ID

) AS LIDER2

 

FROM ACAO A

 

abrs

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.