none
Combinar Tabelas sem Join RRS feed

  • 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_CC

    select 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
    quinta-feira, 16 de janeiro de 2014 14:08

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


    quinta-feira, 16 de janeiro de 2014 14:32

Todas as Respostas

  • Deleted
    quinta-feira, 16 de janeiro de 2014 14:12
  • 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


    quinta-feira, 16 de janeiro de 2014 14:32
  • 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


    quinta-feira, 16 de janeiro de 2014 15:35
  • Ola, boa tarde.

    Você não poderia utilizar o UNION ?

    Obrigado.


    Altieri Pereira http://altieripereira.blogspot.com/

    quinta-feira, 16 de janeiro de 2014 18:03
  • Deleted
    quinta-feira, 16 de janeiro de 2014 18:22
  • 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.

    terça-feira, 21 de janeiro de 2014 12:21
  • Beleza Caio!

    Que bom que deu certo!

    No caso da Filial, vai depender se suas tabelas são compartilhadas ou exclusivas.

    Abraços!


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    terça-feira, 21 de janeiro de 2014 20:53