Usuário com melhor resposta
Combinar Tabelas sem Join

Pergunta
-
Prezados
Preciso combinar resultado de 3 tabelas, porém como elas não tem campo em comum não consigo usar JOIN de forma que de 2 tabelas eu consegui combianar onde demostro na primeira tabela o código funcionário, codigo de pagamento (onde verifico numa segunda tabela para que traga apenas códigos com tipo especifico) e valor, porém entre o código do funcionário e código de pagamento preciso inserir 2 campos que vem da terceira tabela se são codigo de categoria e código de custo.
Abaixo demostro o select:
select RD_MAT, RD_PD, RD_VALOR, RD_CC from SRD010 - primeira tabela
where RD_DATARQ = '201308' and exists (select RV_COD, RV_DESC from SRV010 - segunda tabela
where RV_GERENCI = '1')
order by RD_CCselect RA_MAT, RA_CC, RA_CATFUNC, RA_REFCTA from SRA010 - terceira tabela
where RA_DEMISSA = ' '- Editado CaioTec quinta-feira, 16 de janeiro de 2014 14:08 erro digitação
Respostas
-
Caio, essas tabelas tem relacionamento sim.
Segue a query.
SELECT RD_MAT, RD_PD, RD_VALOR, RD_CC, RA_CATFUNC, RA_REFCTA FROM SRD010 RD INNER JOIN SRA010 RA ON RA.D_E_L_E_T_ = RD.D_E_L_E_T_ AND RA.RA_FILIAL = RD.RD_FILIAL AND RA.RA_MAT = RD.RD_MAT AND RA.RA_DEMISSA = '' INNER JOIN SRV010 RV ON RD.D_E_L_E_T_ = RV.D_E_L_E_T_ AND RD.RD_FILIAL = RV.RV_FILIAL AND RD.RD_PD = RV.RV_COD AND RV.RV_GERENCI = '1' WHERE RD.D_E_L_E_T_ <> '*' AND RD.RD_FILIAL = '01' AND RD.RD_DATARQ = '201308' ORDER BY RD_CC
Não testei, mas deve funcionar.
Caso possua alguma dúvida sobre o Microsiga Protheus, visite o www.masteradvpl.com.br
Abraço!
"A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski
- Editado Kanaãm Luz Romero Rodrigues quinta-feira, 16 de janeiro de 2014 15:36
- Marcado como Resposta CaioTec terça-feira, 21 de janeiro de 2014 12:16
Todas as Respostas
-
-
Caio, essas tabelas tem relacionamento sim.
Segue a query.
SELECT RD_MAT, RD_PD, RD_VALOR, RD_CC, RA_CATFUNC, RA_REFCTA FROM SRD010 RD INNER JOIN SRA010 RA ON RA.D_E_L_E_T_ = RD.D_E_L_E_T_ AND RA.RA_FILIAL = RD.RD_FILIAL AND RA.RA_MAT = RD.RD_MAT AND RA.RA_DEMISSA = '' INNER JOIN SRV010 RV ON RD.D_E_L_E_T_ = RV.D_E_L_E_T_ AND RD.RD_FILIAL = RV.RV_FILIAL AND RD.RD_PD = RV.RV_COD AND RV.RV_GERENCI = '1' WHERE RD.D_E_L_E_T_ <> '*' AND RD.RD_FILIAL = '01' AND RD.RD_DATARQ = '201308' ORDER BY RD_CC
Não testei, mas deve funcionar.
Caso possua alguma dúvida sobre o Microsiga Protheus, visite o www.masteradvpl.com.br
Abraço!
"A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski
- Editado Kanaãm Luz Romero Rodrigues quinta-feira, 16 de janeiro de 2014 15:36
- Marcado como Resposta CaioTec terça-feira, 21 de janeiro de 2014 12:16
-
José, essas tabelas são do módulo de gestão de pessoas do Microsiga Protheus.
SRA = cadastro de funcionários
SRD = movimentações
SRV = cadastro de verbas.
Elas tem um relacionamento entre si da forma que eu coloquei abaixo, e você está certo, RA_MAT é o número da matricula do funcionário e possui relacionamento com o campo RD_MAT.
Abraços!
"A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski
- Editado Kanaãm Luz Romero Rodrigues quinta-feira, 16 de janeiro de 2014 15:35
-
-
-
Bom Dia
Obrigado pela ajuda. Neste caso, não estava trazendo os valores dai comentei os campos Filial no Join que você criou e deu certo. Também vi que é possivel montar Join no Protheus. Estou cadastrado no site que você informou e também no grupo Skype.
Mais uma vez obrigado.
-