olá a todos,
salve galega,
esse é o meu primeiro topico no forum, eu procurei porem nao achei nada relacionado
se tiver me passado desbercebido peço desculpa ai.
bem o meu problema,
tenho uma tabela pessoa que cede FK para duas outras tabelas, funcionario e socio,
[Socio]<—[Pessoa]–>[Funcionario]
ate aqui tudo bem. porem um terceira tabela entrada, precisa me mostrar quem foi o socio responsavel é que foi o funcionario que altorizou ficou assim:
tabela entradas:
| Id | valor | socio id | funcionario id|
onde socio id e funcionario id sao FK para as tabelas que remetem a tabela pessoa,
o meu problema comeca aqui,
eu precio de uma view para mostar os campos de nome que estao na tabela pessoa,
mas eu quero os nomes de socio e de funcionario ou seja o meu SQl fica mais ou menos assim
SELECT [CAMPO1][CAMPO2] FROM entradas e
inner join socio s on s.id = e.socio id
inner join funcionario f on f.id = e.funcionario id
-- 1 inner join pessoa p on p.id = e.funcionario id
-- 2 inner join pessoa p on p.id = e.socio id
eu preciso que na minha view aparecam os campos de nome de socio e de funcionario
| Id | valor | socio id | funcionario id|
| 1 | 0.00 | fulano | cicrano |
desse jeito agora os nomes fulano e cicrano estao na tabela pessoa eu preciso fazer o inner join em elas duas vezes?
ufa, conseguir responder =)
acho que explicar o problema me ajudou a pensar sobre ele,
caso sirva pra alguem. o codigo ficou assim:
select
e.id, e.data, e.valor,
m.nome,
concat(ps.nome," “,ps.sobrenome) as socio,
concat(pf.nome,” ",pf.sobrenome) as funcionario
from entrada e
inner join socio s on s.id = e.idCedente
inner join funcionario f on f.id = e.idFuncionario
inner join pessoa pf on pf.id = f.idpessoa
inner join pessoa ps on ps.id = s.idpessoa
inner join motivoentrada m on m.id = e.idMotivoEntrada
order by e.id
;
e o resultado foi esse
id-- data - valor - motivo -socio -funcionario
6 2012-10-10 00:00:00 15.00 devolucao do iptu Alisson Davis Fernando Lorrand
9 2012-10-10 00:00:00 23.00 recebimento de agua Alexandre Querioz Fernando Lorrand
10 2013-03-01 00:00:00 50.00 recebimento de agua Alexandre Querioz Fernando Lorrand
11 2013-03-01 00:00:00 25.00 recebimento de agua Alexandre Querioz Fernando Lorrand
12 2013-03-01 00:00:00 7.00 recebimento de agua Alexandre Querioz Fernando Lorrand
13 2013-03-01 00:00:00 500.00 recebimento de agua Alexandre Querioz Alexandre Querioz
14 2013-03-01 00:00:00 250.00 recebimento de agua Alexandre Querioz Alexandre Querioz
15 2013-03-01 00:00:00 50.00 recebimento de agua Alexandre Querioz Alisson Davis
16 2013-03-01 00:00:00 50.00 recebimento de agua Alexandre Querioz Alisson Davis