Obá Daniel, que grande jeito me deu esse vídeo. Repare que no meu programinha de estoque e vendas, a consulta para saber quais produtos estavam em falta no estoque, seleccionava todos os códigos de produtos cadastrados, inseria numa tabela temporária. Seleccionava os códigos na tabela estoque e de seguida, com um laço ("for x next") retiro da tabela temporária os códigos existentes na tabela estoque. Assim todos os registos permanecentes na tabela temporária, significam os ausentes no estoque. Funciona, porém muito mais lento, principalmente se a tabela produto tiver muitos registos. Agora com as subselects, massa... Valeu muito Daniel!
Porra cara, estou estupefato com essa joia de aula que recebi agora, vejo que tenho muito que aprender, pois eu estava levando uma surra daquelas, tentando fazer uma consulta, agora resolvi o problema, e resolvi estudar muito SQL também, parabéns.
Parabéns Daniel! TENHO muito o que agradecer a você. Foi numa vídeo aula sua que abriu a minha mente para o Lazarus. O meu muito obrigado, Sucesso e saúde. Forte abraço, Sérgio Ribeiro.
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;
oh, muito bom, mais exemplos de sub query, para nos ajudar, no dia a dia, por exemplo como saber baseado na tabela de bairros, quais bairros não está tendo pedidos, ou qual bairro está tendo mais pedidos para fazer uma promoção, entre outras, rs
Obrigado por compartilhar conhecimento. Estou trabalhando em um sistema de registro de solicitação de transferência de pessoal. Eu tenho duas tabelas no sistema: Estados e Cidades. Um funcionário que trabalha em uma unidade da Cidade São Paulo pode solicitar transferência para uma unidade da cidade do Rio de Janeiro. A condição para atender o pedido desse funcionário é que já exista alguma solicitação registrada de alguém que trabalhe no Rio de Janeiro e queira ir para São Paulo (solicitação inversa). Ou seja, uma permuta simples entre dois funcionários. Até este ponto a consulta é fácil de ser realizada a dificuldade vem em seguida. Digamos que o funcionário José pediu transferência da unidade A para B e o sistema não tenha nenhum registro de pedido de B para A. Mas, entre as centenas de pedidos registrados, o sistema dispõe dos seguintes registros: B para C C para D D para E E para A Logo, se a consulta for capaz de identificar essa condição circular o pedido do funcionário José de A para B poderia ser atendido, bem como os demais pedidos dos funcionários que estavam registrados no sistema. Isso aumentaria a possibilidade de atender as solicitações dos funcionários sem a limitação apenas da condição de consulta e 1 para 1. Se tiver alguma dica que possa me direcionar na solução eficiente deste desafio eu ficarei agradecido.
Salve Diego !!!! Não sei se entendi muito bem. Sem analisar todos os fatos... só pelo que vc me falou "talvez" eu teria feito diferente. Acho que eu teria uma tabela com estas "linhas" cadastradas, exemplo: codigo, origem, destino. 001, São Paulo SP, Rio de Janeiro RJ 002, Rio de Janeiro RJ, Parati RJ 003, Parati RJ, Ubatuba SP ... 101 Rio de Janeiro RJ, São Paulo SP 102 Parati RJ, Rio de Janeiro... vc sabe q origem 001 para saber quem quer voltar somaria 100, entao quem quer voltar esta no codigo 101... no sql vejo quem quer ir para o 101 (sum - 100) vejo quem quer ir para 001... nao sei se rola.. apenas uma ideia rapida
@@infocotidiano , Up! Eu tenho uma tabela com o código do processo, a matrícula do funcionário, o código da unidade de lotação (origem) e o código da unidade solicitada (destino). O que eu preciso é de um algoritmo de consulta em forma de loop que varra toda a tabela de solicitações cruzando os dados e verificando se existe alguma maneira de atender o pedido do funcionário sem se limitar a identificar apenas um pedido inverso. Exemplo de uma consulta limitada: A ---> B (Pedido) B ---> A (Consulta) Exemplo de consulta circular: A ---> B (Pedido) Select * ... Where Lotação = B B ---> C (Linha 1 da consulta) B ---> D (Linha 2) B ---> n... (Linha n) Se não existe unidade de destino = A no resultado da consulta, Então continue.... Select * .... Where Lotação = C (Linha 1 da primeira consulta) C ---> X (Linha 1 da segunda consulta) C ---> Y (Linha 2) C ---> A (Linha 3) C ---> n... (Linha n) Se não existe unidade de destino = A Então continue... { Faria outra consulta com base na segunda linha do resultado da primeira consulta. } Se existe pare! Mostre a condição circular. A ---> B (Pedido) B ---> C (Linha 1 da primeira consulta) C ---> A (Linha 3 da segunda consulta) Tá aí a dificuldade, fazer um loop com o resultado da própria consulta percorrendo linha a linha de cada resultado buscando a informação para atender o pedido inicial. Abraço Daniel, obrigado por responder!
Lembra daqueles conceitos de árvore de busca e árvore de decisão da disciplina estrutura de dados? Acho que eu vou ter que desenvolver algo nesse sentido... :x
@@diegodsa13 depois se vc tiver um dump desta deste db com estruturas e dados cadastrados para teste, se puder mandar... qdo tiver tempo dou uma olhada para tentar te ajudar em algo
Suas aulas são demais .... eu não consigo fazer uma consulta com critérios tipos assim uma option com estado, dai seleciona outra option da cidade e outra option com tipo de empresa , podendo ou não selecionar as três opções , podendo também só selicionar a empresa , ou somente no estado ou tudo entende , não tem jeito de eu fazer essa consulta por opções , podes me ajudar
graças ao SR Deus em 1 lugar e depois ao sr professor Daniel. conseguir resolver um problema chato de chave extrangeira. agora se poder me ajudar a resolver este problema sql statement doesn't return rows usando o postgres ?
Boa noite professor, ótima aula parabéns. Mas professor preciso de sua ajuda, tenho tabela a onde tem varias data em um campo, quero criar um select que traga pra min só os dados que forem maior que 90 dias a partir da data do campo . não sei se da contar a partir de uma data e tambem verificar se é maior. como eu faria isso professor? Muito obrigado =D
ola, tenho um cadastro de cores, produtos,grade, nessa grade gero as cores de cada produto, agora quando entra novas cores como verificar na tabela de grades que nao existe cores dos produtos e criar as mesmas, como fazer isso usando sql ?
nos meus sistemas tenho controle de grade (tamanho e cor), uma tabela de produtos (mestre) e uma de grade (detalhe) (id_produto, cor, tamanho, qtde), então tenho uma função vergrade(nproduto,cCor, cTamanho):boolean... ela retorna verdadeiro ou falso de acordo com a pesquisa... na query simples... select * from grade where id_produto in(nproduto) and COR in(cCOR) and TAMANHO in(cTAMANHO); se retornar 1 registro é pq a cor e tamanho existe para o produto entao retorno true, se nao retorno false...
Olá, como pegar a maior data de serviços referente a cada funcionário tabela funcionario (func_id, func_nome) tabela OrdemServico(os_id, func_id, os_numero, os_data) Já passei por vários exemplos e não funciona. Uso php, com banco de dados firebird.
SELECT f.func_id, f.func_nome, os.maxData FROM funcionario f LEFT JOIN ( SELECT func_id, MAX(os_data) AS maxData FROM OrdemServico GROUP BY func_id ) os ON f.func_id = os.func_id; Essa consulta retornará os dados de todos os funcionários, incluindo aqueles que não possuem nenhuma ordem de serviço registrada. Para obter apenas os funcionários que possuem ordens de serviço, basta substituir "LEFT JOIN" por "INNER JOIN".
Por favor estou com uma enorme dificuldade para fazer um select onde ele retorna uma resposta baseado em uma faixa de valores. Na tebela seria os campos.: ID ValorInicial ValorFinal Resultado
Me ajudou a entender como funciona, e melhorou a performance do meu Select.
Obrgd!
obrigado !
Obá Daniel, que grande jeito me deu esse vídeo. Repare que no meu programinha de estoque e vendas, a consulta para saber quais produtos estavam em falta no estoque, seleccionava todos os códigos de produtos cadastrados, inseria numa tabela temporária. Seleccionava os códigos na tabela estoque e de seguida, com um laço ("for x next") retiro da tabela temporária os códigos existentes na tabela estoque. Assim todos os registos permanecentes na tabela temporária, significam os ausentes no estoque. Funciona, porém muito mais lento, principalmente se a tabela produto tiver muitos registos. Agora com as subselects, massa... Valeu muito Daniel!
Fico feliz em ajudar ! 🙏🙏
Porra cara, estou estupefato com essa joia de aula que recebi agora, vejo que tenho muito que aprender, pois eu estava levando uma surra daquelas, tentando fazer uma consulta, agora resolvi o problema, e resolvi estudar muito SQL também, parabéns.
Fico feliz em ajudar ! Abr 🙏👏
Sou fã desse carra, aulas muito boas, excelente material, tem um curso firebird aqui dele aprendi muito, agradeço super recomendado.
Parabéns Daniel!
TENHO muito o que agradecer a você.
Foi numa vídeo aula sua que abriu a minha mente para o Lazarus.
O meu muito obrigado,
Sucesso e saúde.
Forte abraço,
Sérgio Ribeiro.
Muito Obrigado !!!!!!!! Fico feliz com o feedback !!
Muito bom o seu vídeo, muito útil, pois deixa o código mais profissional!
Realmente um bom trabalho.
Muito Obrigado !!!!!!!!!!
Sinceramente não achei difícil. Perto das queries cabeludas que estou passando mas foi bem legal . Parabéns pela explicação. Vou pra o próximo vídeo.
show !!!! obr !
Onde está achando essas queries cabeludas? Gostaria de botar em prática as skills
Excelente amigo!! Obrigado por compartilhar seu conhecimento
Muito Obrigado !!!!
Obrigado Daniel, foi muito útil para min, aprendir mais uma coisa.
Fico feliz em ajudar, obrigado !!!
Muito top, excelente explicação. Obrigado por compartilhar o conhecimento.
POr nd !
Explica bem e com clareza , parabéns!!
muito Obrigado !
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;
contato para consultoria e orçamento:
contato@infocotidiano.com.br
Muito Obrigado!
oh, muito bom, mais exemplos de sub query, para nos ajudar, no dia a dia, por exemplo como saber baseado na tabela de bairros, quais bairros não está tendo pedidos, ou qual bairro está tendo mais pedidos para fazer uma promoção, entre outras, rs
Boa !
@@infocotidiano
where youtubers.ensino not in(mediocridade,cópia)
perfeito! era exatamente oque eu precisava
Show !
Obrigado por compartilhar conhecimento.
Estou trabalhando em um sistema de registro de solicitação de transferência de pessoal.
Eu tenho duas tabelas no sistema: Estados e Cidades.
Um funcionário que trabalha em uma unidade da Cidade São Paulo pode solicitar transferência para uma unidade da cidade do Rio de Janeiro. A condição para atender o pedido desse funcionário é que já exista alguma solicitação registrada de alguém que trabalhe no Rio de Janeiro e queira ir para São Paulo (solicitação inversa). Ou seja, uma permuta simples entre dois funcionários. Até este ponto a consulta é fácil de ser realizada a dificuldade vem em seguida.
Digamos que o funcionário José pediu transferência da unidade A para B e o sistema não tenha nenhum registro de pedido de B para A.
Mas, entre as centenas de pedidos registrados, o sistema dispõe dos seguintes registros:
B para C
C para D
D para E
E para A
Logo, se a consulta for capaz de identificar essa condição circular o pedido do funcionário José de A para B poderia ser atendido, bem como os demais pedidos dos funcionários que estavam registrados no sistema. Isso aumentaria a possibilidade de atender as solicitações dos funcionários sem a limitação apenas da condição de consulta e 1 para 1.
Se tiver alguma dica que possa me direcionar na solução eficiente deste desafio eu ficarei agradecido.
Salve Diego !!!! Não sei se entendi muito bem. Sem analisar todos os fatos... só pelo que vc me falou "talvez" eu teria feito diferente.
Acho que eu teria uma tabela com estas "linhas" cadastradas, exemplo:
codigo, origem, destino.
001, São Paulo SP, Rio de Janeiro RJ
002, Rio de Janeiro RJ, Parati RJ
003, Parati RJ, Ubatuba SP
...
101 Rio de Janeiro RJ, São Paulo SP
102 Parati RJ, Rio de Janeiro...
vc sabe q origem 001 para saber quem quer voltar somaria 100, entao quem quer voltar esta no codigo 101... no sql vejo quem quer ir para o 101 (sum - 100) vejo quem quer ir para 001...
nao sei se rola.. apenas uma ideia rapida
@@infocotidiano , Up!
Eu tenho uma tabela com o código do processo, a matrícula do funcionário, o código da unidade de lotação (origem) e o código da unidade solicitada (destino).
O que eu preciso é de um algoritmo de consulta em forma de loop que varra toda a tabela de solicitações cruzando os dados e verificando se existe alguma maneira de atender o pedido do funcionário sem se limitar a identificar apenas um pedido inverso.
Exemplo de uma consulta limitada:
A ---> B (Pedido)
B ---> A (Consulta)
Exemplo de consulta circular:
A ---> B (Pedido)
Select * ... Where Lotação = B
B ---> C (Linha 1 da consulta)
B ---> D (Linha 2)
B ---> n... (Linha n)
Se não existe unidade de destino = A no resultado da consulta, Então continue....
Select * .... Where Lotação = C (Linha 1 da primeira consulta)
C ---> X (Linha 1 da segunda consulta)
C ---> Y (Linha 2)
C ---> A (Linha 3)
C ---> n... (Linha n)
Se não existe unidade de destino = A
Então continue...
{
Faria outra consulta com base na segunda linha do resultado da primeira consulta.
}
Se existe pare!
Mostre a condição circular.
A ---> B (Pedido)
B ---> C (Linha 1 da primeira consulta)
C ---> A (Linha 3 da segunda consulta)
Tá aí a dificuldade, fazer um loop com o resultado da própria consulta percorrendo linha a linha de cada resultado buscando a informação para atender o pedido inicial.
Abraço Daniel, obrigado por responder!
Lembra daqueles conceitos de árvore de busca e árvore de decisão da disciplina estrutura de dados? Acho que eu vou ter que desenvolver algo nesse sentido... :x
@@diegodsa13 depois se vc tiver um dump desta deste db com estruturas e dados cadastrados para teste, se puder mandar... qdo tiver tempo dou uma olhada para tentar te ajudar em algo
Ótimo vídeo, ótima didática! Obrigado por compartilhar conhecimento amigo!
Muito obrigado pelo feedback ! fiquei muito feliz!
Ola, você poderia faz uma aula de COUNT() USANDO SQL, seria muito bom.
desculpe a demora, mas seu comentário ficou retido.
Exemplo: SELECT COUNT(CodigoProduto) AS QuantidadeDeProdutos FROM Produtos;
Suas aulas são demais .... eu não consigo fazer uma consulta com critérios tipos assim
uma option com estado, dai seleciona outra option da cidade e outra option com tipo de empresa , podendo ou não selecionar as três opções , podendo também só selicionar a empresa , ou somente no estado ou tudo entende , não tem jeito de eu fazer essa consulta por opções , podes me ajudar
Massa legal parabéns
Muito Obrigado !!!!!
graças ao SR Deus em 1 lugar e depois ao sr professor Daniel. conseguir resolver um problema chato de chave extrangeira. agora se poder me ajudar a resolver este problema sql statement doesn't return rows usando o postgres ?
www.devmedia.com.br/forum/sql-statement-doesnt-return-rows/561950
nossa que top. ensinamento top, SLC.
fico feliz em ajudar !
Boa noite professor, ótima aula parabéns. Mas professor preciso de sua ajuda, tenho tabela a onde tem varias data em um campo, quero criar um select que traga pra min só os dados que forem maior que 90 dias a partir da data do campo . não sei se da contar a partir de uma data e tambem verificar se é maior. como eu faria isso professor? Muito obrigado =D
th-cam.com/video/_Kxsm_pVgXY/w-d-xo.html
Neste vídeo mostro como extrair datas ... veja se te ajuda
Meu ótimo video, ajudou muito
Muito Obrigado !
Muito bem explicado!
Obrigado 😃
Perfeito, top
Ajudou mt mano
Obrigado !
Ajudou muito.
Obrigado
Fico feliz! Abr
Show. 🤗🤗
ola, tenho um cadastro de cores, produtos,grade, nessa grade gero as cores de cada produto, agora quando entra novas cores como verificar na tabela de grades que nao existe cores dos produtos e criar as mesmas, como fazer isso usando sql ?
nos meus sistemas tenho controle de grade (tamanho e cor), uma tabela de produtos (mestre) e uma de grade (detalhe) (id_produto, cor, tamanho, qtde), então tenho uma função vergrade(nproduto,cCor, cTamanho):boolean...
ela retorna verdadeiro ou falso de acordo com a pesquisa...
na query simples... select * from grade where id_produto in(nproduto) and COR in(cCOR) and TAMANHO in(cTAMANHO);
se retornar 1 registro é pq a cor e tamanho existe para o produto entao retorno true, se nao retorno false...
Obrigado vou analisar, e aguardo aprender acbr com lazarus
Olá, como pegar a maior data de serviços referente a cada funcionário
tabela funcionario (func_id, func_nome)
tabela OrdemServico(os_id, func_id, os_numero, os_data)
Já passei por vários exemplos e não funciona.
Uso php, com banco de dados firebird.
SELECT f.func_id, f.func_nome, os.maxData
FROM funcionario f
LEFT JOIN (
SELECT func_id, MAX(os_data) AS maxData
FROM OrdemServico
GROUP BY func_id
) os ON f.func_id = os.func_id;
Essa consulta retornará os dados de todos os funcionários, incluindo aqueles que não possuem nenhuma ordem de serviço registrada. Para obter apenas os funcionários que possuem ordens de serviço, basta substituir "LEFT JOIN" por "INNER JOIN".
Ja vi uns 7 videos diferentes sobre como usar subquery, ta fodaaa, não consigo entender.
maravilha
Obrigado !
Por favor estou com uma enorme dificuldade para fazer um select onde ele retorna uma resposta baseado em uma faixa de valores. Na tebela seria os campos.: ID ValorInicial ValorFinal Resultado
Entrando com um valor, ele veria as faixas de valores e sairia uma resosta para cada faixa de valor
@@accesscity select ID from tabela where valor between ValorInicial and ValorFinal
startdb.info/2019/06/mysql-server-14-between.html
é o casa grande do sql? kkkkkk
kkkkkkkkkkkkkkkkkk pior q os amigos me chamam de casa grande mesmo kkk
Sou fã desse carra, aulas muito boas, excelente material, tem um curso firebird aqui dele aprendi muito, agradeço super recomendado.
Muito obrigado ! 🙏🙏🙏