Forum Stats

  • 3,769,955 Users
  • 2,253,036 Discussions
  • 7,875,251 Comments

Discussions

Data mais próxima

Eu tenho uma tabela de funcionários com datas de marcação de ponto

Preciso encontrar qual a escala ativa na data da marcação em outra tabela.

Como faço para fazer a pesquisa na tabela de escala?

tentei algo do tipo

Select * from funcionarios a

inner join (select * from escala

                 order by escala.datamudanca

                 and rownum = 1) b on b.codfunc = a.codfunc and b.datamudanca<= a.data_apontamento

mas não funcionou porque o select do inner join retorna apenas uma linha

alguma sugestão?

Best Answer

Answers

  • J.Laurindo Chiappa
    J.Laurindo Chiappa Member Posts: 28
    edited Feb 9, 2019 4:04PM

    Pra vc poder buscar informações em tabelas, vc TEM que saber exatamente quais as colunas envolvidas E qual a regra lógica que coordena os dados... Por exemplo, talvez no seu caso vc tenha N registros com DATAMUDANCA < DATA_APONTAMENTO e vc quer achar o primeiro, esse contém o dado que vc quer retornar ?? Ou talvez seja uma OUTRA condição ??? Quem pode saber é SÒ e APENAS VOCÊ....

    Assim sendo, pra gente poder te ajudar, nos dê os CREATE TABLE e uns INSERTs com dados para podermos testar E nos explique DETALHADAMENTE qual lógica vc quer implementar... Faça de conta que não conhecemos NADA sobre o seu modelo de dados, NADA sobre seus dados e suas regras de negócio, até porque NA VERDADE NÃO CONHECEMOS MESMO, sim sim ??

    Abraços,

      Chiappa

  • J.Laurindo Chiappa
    J.Laurindo Chiappa Member Posts: 28
    edited Feb 9, 2019 4:12PM Accepted Answer

    Mesmo sem as informações TODAS que solicitei na resposta anterior, uma coisa eu posso apontar no seu código : pelo jeito vc ordenou a sua query principal e depois colocou um ROWNUM = 1 pra trazer só o primeiro Registro ?? Se foi isso, a sua lógica está errada - como Acredito que vc sabe, no RDBMS Oracle o ROWNUM é assignado ANTES do processamento do ORDER BY... Vide https://sanaulla.info/2013/01/23/using-rownum-with-order-by-in-oracle-sql/ e https://www.techonthenet.com/oracle/functions/rownum.php para exemplos....

    Então, eu ACREDITO que o seu código devia ser algo tipo : SELECT * from (select colunas, ROWNUM as NUM_LINHA com ORDER BY condicao) WHERE NUM_LINHA = 1 , sim sim ???

    Abraços,

       Chiappa