Como usar um subselect em uma consulta SQL

แชร์
ฝัง
  • เผยแพร่เมื่อ 29 ต.ค. 2024

ความคิดเห็น • 72

  • @jameswhatson6397
    @jameswhatson6397 ปีที่แล้ว +1

    Me ajudou a entender como funciona, e melhorou a performance do meu Select.
    Obrgd!

  • @Warara11
    @Warara11 6 ปีที่แล้ว +1

    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!

    • @infocotidiano
      @infocotidiano  6 ปีที่แล้ว

      Fico feliz em ajudar ! 🙏🙏

  • @somaisumfato
    @somaisumfato 5 ปีที่แล้ว +3

    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.

    • @infocotidiano
      @infocotidiano  5 ปีที่แล้ว

      Fico feliz em ajudar ! Abr 🙏👏

  • @dederodriguesdede
    @dederodriguesdede 6 ปีที่แล้ว

    Sou fã desse carra, aulas muito boas, excelente material, tem um curso firebird aqui dele aprendi muito, agradeço super recomendado.

  • @conectsoftbr3316
    @conectsoftbr3316 6 ปีที่แล้ว +1

    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.

    • @infocotidiano
      @infocotidiano  6 ปีที่แล้ว

      Muito Obrigado !!!!!!!! Fico feliz com o feedback !!

  •  6 ปีที่แล้ว +1

    Muito bom o seu vídeo, muito útil, pois deixa o código mais profissional!
    Realmente um bom trabalho.

  • @techdevrpa
    @techdevrpa 3 ปีที่แล้ว +3

    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.

    • @infocotidiano
      @infocotidiano  3 ปีที่แล้ว

      show !!!! obr !

    • @erickdecarv
      @erickdecarv 2 ปีที่แล้ว

      Onde está achando essas queries cabeludas? Gostaria de botar em prática as skills

  • @pwrprojetos2000
    @pwrprojetos2000 4 ปีที่แล้ว +2

    Excelente amigo!! Obrigado por compartilhar seu conhecimento

  • @ciriloalves897
    @ciriloalves897 5 ปีที่แล้ว +1

    Obrigado Daniel, foi muito útil para min, aprendir mais uma coisa.

    • @infocotidiano
      @infocotidiano  5 ปีที่แล้ว

      Fico feliz em ajudar, obrigado !!!

  • @familiapaixaoeventoseproducoes
    @familiapaixaoeventoseproducoes ปีที่แล้ว

    Muito top, excelente explicação. Obrigado por compartilhar o conhecimento.

  • @rodrigofrancisco489
    @rodrigofrancisco489 4 ปีที่แล้ว +1

    Explica bem e com clareza , parabéns!!

  • @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;

    • @infocotidiano
      @infocotidiano  ปีที่แล้ว

      contato para consultoria e orçamento:
      contato@infocotidiano.com.br
      Muito Obrigado!

  • @walney2008
    @walney2008 4 ปีที่แล้ว +1

    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

    • @infocotidiano
      @infocotidiano  4 ปีที่แล้ว

      Boa !

    • @haristydes1166
      @haristydes1166 4 ปีที่แล้ว

      @@infocotidiano
      where youtubers.ensino not in(mediocridade,cópia)

  • @renamalves169
    @renamalves169 ปีที่แล้ว +1

    perfeito! era exatamente oque eu precisava

  • @diegodsa13
    @diegodsa13 5 ปีที่แล้ว +1

    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.

    • @infocotidiano
      @infocotidiano  5 ปีที่แล้ว +1

      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

    • @diegodsa13
      @diegodsa13 5 ปีที่แล้ว

      @@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!

    • @diegodsa13
      @diegodsa13 5 ปีที่แล้ว +1

      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

    • @infocotidiano
      @infocotidiano  5 ปีที่แล้ว +1

      @@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

  • @michelcesar85
    @michelcesar85 5 ปีที่แล้ว

    Ótimo vídeo, ótima didática! Obrigado por compartilhar conhecimento amigo!

    • @infocotidiano
      @infocotidiano  5 ปีที่แล้ว +1

      Muito obrigado pelo feedback ! fiquei muito feliz!

  • @brennomarquesdelima5601
    @brennomarquesdelima5601 5 ปีที่แล้ว +1

    Ola, você poderia faz uma aula de COUNT() USANDO SQL, seria muito bom.

    • @infocotidiano
      @infocotidiano  5 ปีที่แล้ว

      desculpe a demora, mas seu comentário ficou retido.
      Exemplo: SELECT COUNT(CodigoProduto) AS QuantidadeDeProdutos FROM Produtos;

  • @casavsoficina7342
    @casavsoficina7342 4 ปีที่แล้ว

    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

  • @jesustecprosperityyy
    @jesustecprosperityyy 6 ปีที่แล้ว +1

    Massa legal parabéns

  • @CarlosAugusto-m3y
    @CarlosAugusto-m3y ปีที่แล้ว

    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 ?

    • @infocotidiano
      @infocotidiano  ปีที่แล้ว

      www.devmedia.com.br/forum/sql-statement-doesnt-return-rows/561950

  • @uiraquitanpessoa5181
    @uiraquitanpessoa5181 4 ปีที่แล้ว +1

    nossa que top. ensinamento top, SLC.

  • @jeffersonpfz
    @jeffersonpfz 5 ปีที่แล้ว +1

    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

    • @infocotidiano
      @infocotidiano  5 ปีที่แล้ว

      th-cam.com/video/_Kxsm_pVgXY/w-d-xo.html
      Neste vídeo mostro como extrair datas ... veja se te ajuda

  • @yanjdr123
    @yanjdr123 5 ปีที่แล้ว +1

    Meu ótimo video, ajudou muito

  • @brayanmachado4826
    @brayanmachado4826 3 ปีที่แล้ว +1

    Muito bem explicado!

  • @reginaldoalvesdesiqueira747
    @reginaldoalvesdesiqueira747 ปีที่แล้ว

    Perfeito, top

  • @lardenon
    @lardenon ปีที่แล้ว +1

    Ajudou mt mano

  • @dr.filippinigerson1209
    @dr.filippinigerson1209 3 ปีที่แล้ว +1

    Ajudou muito.
    Obrigado

  • @erikamacedo8665
    @erikamacedo8665 ปีที่แล้ว +1

    Show. 🤗🤗

  • @walney2008
    @walney2008 4 ปีที่แล้ว +1

    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 ?

    • @infocotidiano
      @infocotidiano  4 ปีที่แล้ว

      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...

    • @walney2008
      @walney2008 4 ปีที่แล้ว

      Obrigado vou analisar, e aguardo aprender acbr com lazarus

  • @NiltonOliv
    @NiltonOliv ปีที่แล้ว

    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.

    • @AstroPixel
      @AstroPixel ปีที่แล้ว

      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".

  • @sergioluis2421
    @sergioluis2421 ปีที่แล้ว +1

    Ja vi uns 7 videos diferentes sobre como usar subquery, ta fodaaa, não consigo entender.

  • @nfsyssoftware7764
    @nfsyssoftware7764 2 ปีที่แล้ว +1

    maravilha

  • @accesscity
    @accesscity 4 ปีที่แล้ว

    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

    • @accesscity
      @accesscity 4 ปีที่แล้ว

      Entrando com um valor, ele veria as faixas de valores e sairia uma resosta para cada faixa de valor

    • @infocotidiano
      @infocotidiano  4 ปีที่แล้ว

      @@accesscity select ID from tabela where valor between ValorInicial and ValorFinal
      startdb.info/2019/06/mysql-server-14-between.html

  • @Camaraocompao
    @Camaraocompao ปีที่แล้ว +2

    é o casa grande do sql? kkkkkk

    • @infocotidiano
      @infocotidiano  ปีที่แล้ว +2

      kkkkkkkkkkkkkkkkkk pior q os amigos me chamam de casa grande mesmo kkk

  • @dederodriguesdede
    @dederodriguesdede 6 ปีที่แล้ว +1

    Sou fã desse carra, aulas muito boas, excelente material, tem um curso firebird aqui dele aprendi muito, agradeço super recomendado.

    • @infocotidiano
      @infocotidiano  6 ปีที่แล้ว

      Muito obrigado ! 🙏🙏🙏