Como usar um subselect em uma consulta SQL

Поділитися
Вставка
  • Опубліковано 4 жов 2024
  • A definição de Subselect ou subquery é uma instrução de consulta dentro de outra consulta SQL.
    Apoie o Canal - Clique no "VALEU DEMAIS" e faça uma doação
    👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆
    Aqui então vai dois exemplos simples de como usar subselect.
    Ah, deixe seu like !!!!
    😉 Gostou do vídeo, que tal me doar um cafezinho?
    ☕ Chave Pix: danegd@outlook.com.br
    ☕ PicPay: picpay.me/dane...

КОМЕНТАРІ • 72

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

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

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

    Excelente amigo!! Obrigado por compartilhar seu conhecimento

  •  6 років тому +1

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

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

    Explica bem e com clareza , parabéns!!

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

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

  • @ciriloalves897
    @ciriloalves897 5 років тому +1

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

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

  • @familiapaixaoeventoseproducoes

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

  • @dederodriguesdede
    @dederodriguesdede 6 років тому

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

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

    perfeito! era exatamente oque eu precisava

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

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

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

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

      Muito obrigado pelo feedback ! fiquei muito feliz!

  • @jesustecprosperityyy
    @jesustecprosperityyy 6 років тому +1

    Massa legal parabéns

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

    Muito bem explicado!

  • @yanjdr123
    @yanjdr123 5 років тому +1

    Meu ótimo video, ajudou muito

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

    nossa que top. ensinamento top, SLC.

  • @dr.filippinigerson1209
    @dr.filippinigerson1209 3 роки тому +1

    Ajudou muito.
    Obrigado

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

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

    Ajudou mt mano

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

    Show. 🤗🤗

  • @reginaldoalvesdesiqueira747

    Perfeito, top

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

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

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

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

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

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

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

  • @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 років тому

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

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

    maravilha

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

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