Estou desenvolvendo um sistema onde tenho que fazer um controle de documentos e em um determinado momento devo listar todos os documentos de propriedade da pessoa logada e também os documentos que sejam de outras pessoas mas relacionadas ao departamento da pessoa logada.
Para isso escrevi uma consulta SQL que retorna exatamente o que preciso, porém não sei como transcrevê-la para o Lumine.
A consulta é esta:
select p.nome as proprietario, doc.codigo as coddoc, doc.nome, doc.ativo, doc.aprovado from pessoa p
inner join colaborador c on p.codigo = c.pessoa
inner join departamento d on c.departamento = d.codigo
inner join documento_departamento dd on d.codigo = dd.departamento
inner join documento doc on dd.documento = doc.codigo and doc.proprietario = p.codigo
where p.codigo = $cod_pessoa
UNION
select p.nome as proprietario, dd.documento as coddoc, doc.nome, doc.ativo, doc.aprovado from documento_departamento dd
inner join documento doc on dd.documento = doc.codigo
inner join pessoa p on doc.proprietario = p.codigo
where dd.departamento in(select departamento from colaborador where pessoa=$cod_pessoa) and doc.proprietario <> $cod_pessoa
Para um melhor entendimento:
A tabela DOCUMENTO se relaciona 1-N com PESSOA
A tabela PESSOA se relaciona 1-N com COLABORADOR
A tabela COLABORADOR se relaciona 1-N DEPARTAMENTO
A tabela DOCUMENTO se relaciona N-N com DEPARTAMENTO, assim eu tenho a tabela DOCUMENTO_DEPARTAMENTO
Meu objetivo(já alcançado com essa consulta) é trazer os documentos de propriedade de uma pessoa e os documentos que tenham relação com o departamento dessa pessoa independente do proprietário.
Alguém sabe me ajudar?
Grato pela atenção
Gustavo
PS: Se alguém souber uma outra forma de trazer os mesmos resultados de maneira mais simplificada por favor me diga.

Help















