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
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;
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
Cara você é fora de série mesmo. 👏🏼👏🏼👏🏼
Não esquece de elaborar uma aula sobre transformar um ano fiscal em ano safra 😅😅😅😅
Opaa, está anotado aqui Marcelo!! Em breve faço sim!! Valeeeeu 💪🏻💪🏻💪🏻💪🏻
salvou meu dia !! obrigado grande Odin kakakak !!
Kkkkkk, shoooow!!
A minha densa escuridão cerebral agradece as suas luzes. Linda aula. Parabéns.
Valeeeeu 💪🏻💪🏻💪🏻💪🏻
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
Exato, depois q pega o jeito faz de olho fechado... hehhee
Parabéns pelo conteúdo do vídeo. Me ajudou muito. Obrigado
EXCELENTE, MUITO OBRIGADO, VC É O CARA, ABRAÇÃO.
Valeeeeu 💪🏻💪🏻💪🏻💪🏻
vlw, excelente. Aprendi bastante. Agradeço sua dedicação.
Valeeeeu!!!
Muito bom!
Obrigado!
Sem palavras, magnifico.
Valeeeeu!!!
Excelente! Estava em busca justamente desses esclarecimentos. Valeu pela qualidade.
Shoow!! 💪🏻💪🏻💪🏻
Cara 😎 muito obrigado. Respondeu a minha dúvida por e-mail e ainda me deu de presente 🎁 conteúdo !!!! Valeu MQFS!!!
Shooow!! 💪🏻💪🏻💪🏻
Excelente. Parabéns!
Valeeeeu 💪🏻💪🏻💪🏻💪🏻
Muito legal, top parabéns
Valeeeeu 💪🏻💪🏻💪🏻💪🏻💪🏻
Top Parabéns, muito claro!
Valeeeeu 💪🏻💪🏻💪🏻💪🏻
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."
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
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?
Opaaa, valeeu!! Vamos falando no telegram
Show! Me ajudou bastante!
Opa, valeeeu!! 💪🏻💪🏻💪🏻
Fico feliz que tenha gostado!
Muito show! Sou um dos alunos do MQFS curso muito bom. Prof. teria como fazer um vídeo com a diferenças de join?
Opa, com certeza Marlos!! Vou preparar aqui. Não esquece de me mandar o link do certificado pra por no site 💪🏻💪🏻💪🏻💪🏻
Teria algum vídeo que demonstre a melhor maneira de fazer um alto incremental de uma chave composta, tipo ID, ID_INCREMENTAL
Opa, veja esse: ua-cam.com/video/_Y98jAWU74Q/v-deo.html
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
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.💪🏻💪🏻
Opa, a consulta acima do UNION ALL é executada apenas uma vez? oque é chamado repentinas vezes é a consulta abaixo?
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.
Top.
Valeeeeu!!
Rapaz não entendi tudo mas tua explicação em outras coisas foi boa.
Opa, valeu!!
Se tiver alguma parte específica que não ficou clara, comenta aí que tento explicar de outra forma.💪🏻💪🏻
@@mqfs Não faz diferença pq eu decidi não usar o programa.Ele não vale muito,o de graça.
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?
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!💪🏻💪🏻
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..
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
Isso funciona no sql ansi?
Opa, você se refere ao padrão SQL ANSI em geral ou a algum banco de dados específico? No Firebird isso funciona normalmente.