RECURSIVIDADE COM CTE EM DETALHES - MESMO EXEMPLO COM E SEM ESSE RECURSO

Поділитися
Вставка
  • Опубліковано 10 лют 2025
  • Fala pessoal!! Hoje vamos pegar a recursividade com CTE pelo colarinho, vou explicar ela em detalhes e mostrar como resolver um exemplo prático COM e SEM recursividade!!
    Tenham um ótimo vídeo! Forte abraço!!
    /************************************************************
    Acesso ao BD do MQFS e Scripts: mqfs.com.br/#a...
    ************************************************************/
    Canal no Telegram: t.me/mqFirebir...
    Grupo privado de estudos no face: / mqfirebirdsql
    #mqfs #firebirdsql #firebird #database #sql

КОМЕНТАРІ • 55

  • @joatanlima10
    @joatanlima10 Рік тому +1

    Parabens pelo video!!
    Preciso de ajuda em um projeto sobre futebol desde já agradeço, as consultas que preciso são: Total Frequencia + Assiduidade, sendo essa segunda mais complexa, exemplo:
    Cada mês são 4 jogos (relatório é sempre puxado do total de 3 meses ou 90 dias), select abaixo já esta organizado por Total de frequencia, faltando organizar por assiduidade que deve ser comparada sempre a cada frequência anterior.
    Exemplo:
    Dois atletas empatam com 8 frequencias, sendo que o primeiro faltou o último jogo 07/04 e o segundo jogador não, então o segundo jogador fica na frente devido ordem de assiduidade, caso continuem empatados, precisa comparar o penultimo jogo que foi jogo 01/04, e assim por diante até chegar em um jogo que um faltou e esse ficará abaixo na ordem da relação: Total Frequencia + Assiduidade.
    Tabelas resumidas são:
    Jogador
    ncod_jogador
    cnome_joagador
    Frequencias
    ncod_jogador
    nqtdeFrequencia
    dt_Frequencia
    Abaixo o select inicial que falta ordenar por assiduidade:
    select
    frequencias.ncod_jogador,
    jogador.cnome_jogador
    sum(nqtdeFrequencia) as Total_Freq
    from frequencias
    inner join jogador on (frequencias.ncod_jogador = jogador.ncod_jogador)
    where CAST(frequencias.dt_frequencia as date)
    BETWEEN cast( dateadd (day, -90,current_date) as date) and cast(current_date as date)
    Group by
    frequencias.ncod_jogador,
    jogador.cnome_jogador
    Order by Total_Freq DESC;

  • @arthurr55
    @arthurr55 2 роки тому +2

    você é o cara Edson! Parabéns, e pra quem ainda se pergunta se vale a pena fazer seu curso, o que posso dizer é: Quem não fez, perdeu! só lamento

  • @marceloini
    @marceloini 4 роки тому +4

    Cara você é fora de série mesmo. 👏🏼👏🏼👏🏼
    Não esquece de elaborar uma aula sobre transformar um ano fiscal em ano safra 😅😅😅😅

    • @mqfs
      @mqfs  4 роки тому

      Opaa, está anotado aqui Marcelo!! Em breve faço sim!! Valeeeeu 💪🏻💪🏻💪🏻💪🏻

  • @marcosrocha7586
    @marcosrocha7586 3 роки тому +1

    salvou meu dia !! obrigado grande Odin kakakak !!

    • @mqfs
      @mqfs  3 роки тому

      Kkkkkk, shoooow!!

  • @urmenyi
    @urmenyi 4 роки тому +1

    A minha densa escuridão cerebral agradece as suas luzes. Linda aula. Parabéns.

    • @mqfs
      @mqfs  4 роки тому

      Valeeeeu 💪🏻💪🏻💪🏻💪🏻

  • @rjsfrajola
    @rjsfrajola 3 роки тому +1

    Excelente um atalho que eu não usava era o Ctrl + Enter nos campos bem legal e recursividade é bem útil e complicado no começo

    • @mqfs
      @mqfs  3 роки тому

      Exato, depois q pega o jeito faz de olho fechado... hehhee

  • @mykaelmello6290
    @mykaelmello6290 Рік тому

    Parabéns pelo conteúdo do vídeo. Me ajudou muito. Obrigado

  • @Eder_Mello
    @Eder_Mello 4 роки тому +1

    EXCELENTE, MUITO OBRIGADO, VC É O CARA, ABRAÇÃO.

    • @mqfs
      @mqfs  4 роки тому

      Valeeeeu 💪🏻💪🏻💪🏻💪🏻

  • @wellingtonsala6032
    @wellingtonsala6032 4 роки тому +1

    vlw, excelente. Aprendi bastante. Agradeço sua dedicação.

    • @mqfs
      @mqfs  4 роки тому

      Valeeeeu!!!

  • @CaioLesnock
    @CaioLesnock 2 роки тому +1

    Muito bom!
    Obrigado!

  • @josefranciscosilva7151
    @josefranciscosilva7151 4 роки тому +1

    Sem palavras, magnifico.

    • @mqfs
      @mqfs  4 роки тому

      Valeeeeu!!!

  • @guilhermeb.4128
    @guilhermeb.4128 4 роки тому

    Excelente! Estava em busca justamente desses esclarecimentos. Valeu pela qualidade.

    • @mqfs
      @mqfs  4 роки тому

      Shoow!! 💪🏻💪🏻💪🏻

  • @WeslleyCastilho
    @WeslleyCastilho 3 роки тому

    Cara 😎 muito obrigado. Respondeu a minha dúvida por e-mail e ainda me deu de presente 🎁 conteúdo !!!! Valeu MQFS!!!

    • @mqfs
      @mqfs  3 роки тому

      Shooow!! 💪🏻💪🏻💪🏻

  • @joelcosta1631
    @joelcosta1631 4 роки тому +1

    Excelente. Parabéns!

    • @mqfs
      @mqfs  4 роки тому

      Valeeeeu 💪🏻💪🏻💪🏻💪🏻

  • @OrneiPSilva
    @OrneiPSilva 4 роки тому +1

    Muito legal, top parabéns

    • @mqfs
      @mqfs  4 роки тому

      Valeeeeu 💪🏻💪🏻💪🏻💪🏻💪🏻

  • @GlauberGomesLions
    @GlauberGomesLions 4 роки тому +1

    Top Parabéns, muito claro!

    • @mqfs
      @mqfs  4 роки тому

      Valeeeeu 💪🏻💪🏻💪🏻💪🏻

  • @carloshendrikoliveir
    @carloshendrikoliveir 3 роки тому +2

    Bom dia, Edson
    eu testei o sql com recursividade para encontrar um numero faltante na tabela produto. Se o numero faltante estiver próximo do inicio, acha de boa, mas se tiver que percorrer muitos registro para localizar, ocorre o seguinte erro "Too many concurrent executions of the same request."

    • @mqfs
      @mqfs  3 роки тому

      Opa, realmente, a recursividade do FB tem limite de 1024 iterações. Pra esse caso de encontrar furo de sequência numérica seria interessante utilizar outros métodos.. Como por exemplo o que usei nesse vídeo: ua-cam.com/video/cgb9tL20EYw/v-deo.html

  • @tavaresdaniel
    @tavaresdaniel 4 роки тому +2

    Excelente vídeo! Estou precisando fazer cálculo de consumo com esta hierarquia, onde a quantidade do pai multiplica a quantidade do filho em múltiplos níveis. Consigo fazer com este recurso?

    • @mqfs
      @mqfs  4 роки тому +1

      Opaaa, valeeu!! Vamos falando no telegram

  • @sandrorobertoventura8875
    @sandrorobertoventura8875 8 місяців тому

    Show! Me ajudou bastante!

    • @mqfs
      @mqfs  26 днів тому

      Opa, valeeeu!! 💪🏻💪🏻💪🏻
      Fico feliz que tenha gostado!

  • @marlosnoel
    @marlosnoel 4 роки тому +2

    Muito show! Sou um dos alunos do MQFS curso muito bom. Prof. teria como fazer um vídeo com a diferenças de join?

    • @mqfs
      @mqfs  4 роки тому

      Opa, com certeza Marlos!! Vou preparar aqui. Não esquece de me mandar o link do certificado pra por no site 💪🏻💪🏻💪🏻💪🏻

  • @laerdespatrocinio489
    @laerdespatrocinio489 3 роки тому +1

    Teria algum vídeo que demonstre a melhor maneira de fazer um alto incremental de uma chave composta, tipo ID, ID_INCREMENTAL

    • @mqfs
      @mqfs  3 роки тому +1

      Opa, veja esse: ua-cam.com/video/_Y98jAWU74Q/v-deo.html

  • @pabloleonardo321
    @pabloleonardo321 Рік тому

    04:37
    nao entendi aquele ":pIdSubItem"
    1.
    o que é esse ":p"?
    2.
    "IDSubitem" representa a coluna "ID" da tabela "Menu_Sub_item"? Fiquei confuso nisso pois nunca vi esse tipo de sintaxe.
    3.
    Em caso afirmativo sobre a pergunta anterior, então daria na mesma reescrevêssemos a expressão da seguinte forma?
    where si.id = :pIdSubItem

    • @mqfs
      @mqfs  5 днів тому

      Opa, vamos lá:
      1. O :p indica um parâmetro, permitindo informar um valor que pode variar conforme a necessidade. Assim é possível passar diferentes códigos de forma dinâmica.
      2. Sim, IDSubitem representa a coluna ID da tabela menu_sub_item. Por isso apelidamos a tabela como 'si' e na condição do filtro utilizamos where si.id = :pIdSubItem.
      3. Sim!
      Se ainda restar alguma dúvida ou se precisar de outra explicação, é só avisar que tento explicar de outra forma.💪🏻💪🏻

  • @gabrielperuchi6462
    @gabrielperuchi6462 3 роки тому +1

    Opa, a consulta acima do UNION ALL é executada apenas uma vez? oque é chamado repentinas vezes é a consulta abaixo?

    • @mqfs
      @mqfs  3 роки тому +1

      Exato, o primeiro select é o que dá início à recursividade, partindo dos dados dele é que será executado o segundo select até que se encerre a recursividade. Caso o primeiro select retorne mais de um registro, para cada registro retornado ele vai executar a recursividade.

  • @joaopoliceno8844
    @joaopoliceno8844 4 роки тому +1

    Top.

    • @mqfs
      @mqfs  4 роки тому

      Valeeeeu!!

  • @renatotravassos3359
    @renatotravassos3359 9 днів тому

    Rapaz não entendi tudo mas tua explicação em outras coisas foi boa.

    • @mqfs
      @mqfs  8 днів тому

      Opa, valeu!!
      Se tiver alguma parte específica que não ficou clara, comenta aí que tento explicar de outra forma.💪🏻💪🏻

    • @renatotravassos3359
      @renatotravassos3359 8 днів тому

      @@mqfs Não faz diferença pq eu decidi não usar o programa.Ele não vale muito,o de graça.

  • @copa2014tafarel
    @copa2014tafarel 11 місяців тому

    Esse vídeo tem 3 anos, mas até agora eu não entendo como funciona a execução certinho ali.
    minha dúvida é, o sql que tem :pId vai ser executado só uma vez? ou ele vai sempre ser executado trazendo o mesmo resultado do pId?

    • @mqfs
      @mqfs  7 днів тому +1

      Opa, ele vai ser executado várias vezes, conforme necessário. Funciona assim: primeiro, o SQL com :pId executa e traz apenas o primeiro nível da hierarquia (por exemplo, o subitem). Depois, o recursive continua rodando e pegando os id_pai, subindo na estrutura até encontrar todos os níveis acima (o item e o menu, no exemplo do vídeo). Ou seja, ele vai rodando até não encontrar mais registros para subir. Isso é o que permite navegar em estruturas hierárquicas!💪🏻💪🏻

  • @romulocortez6866
    @romulocortez6866 3 роки тому +1

    Parabéns! Tem algum video sobre recursivo em quem o campo id_pai é uma string?
    exemplo:
    1
    1.1
    1.1.1
    1.1.2
    1.1.2.1
    ...
    etc..

    • @mqfs
      @mqfs  3 роки тому

      Opa, veja se esse vídeo de ajuda, nele mostro como totalizar um plano de contas: ua-cam.com/video/hovPzeguj_c/v-deo.html

  • @cesargomes9808
    @cesargomes9808 10 місяців тому

    Isso funciona no sql ansi?

    • @mqfs
      @mqfs  12 днів тому

      Opa, você se refere ao padrão SQL ANSI em geral ou a algum banco de dados específico? No Firebird isso funciona normalmente.