Alguem me ajuda com um sql meio complicado

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