Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

sreletronica

consulta 2 tabelas com condição tabela 2 data vigente

Recommended Posts

boa tarde, pessoal, preciso juntar duas tabelas, sendo a primeira apresentando todos os registros contido nela, com a condição de o que estiver na segunda tabela tem um preço menor com data_ini e dt_fim usando o current_date para definir se esta dentro da condição ou seja, dentro da data vigente..

exemplo

tabela1
------------------------------------------------------------------------------------------------------
cod_barras             | descrição                       | preco
--------------------------------------------------------------------------------------------------------
00000000000017 | PAO DE SAL                   | 0,50
00000000000122 | PEPSI 1 5L                     | 5,00
00000000000987 | TAIOBA                           | 2,00
00000000001526 | ALHO KG                        | 20,00


tabela 2 
------------------------------------------------------------------------------------------------------
barras                      | preco                   | DT_ini              |  DT_FIM
--------------------------------------------------------------------------------------------------------
00000000000017 | 0,30                       | 03/11/2017 | 10/11/2017
00000000001526 | 15,00                     | 05/11/2017 | 08/11/2017

considerando que a current_date = 04/11/2017
deveria ficar asim..
------------------------------------------------------------------------------------------------------
cod_barras | descrição | preco
--------------------------------------------------------------------------------------------------------
00000000000017 | PAO DE SAL | 0,30
00000000000122 | PEPSI 1 5L | 5,00
00000000000987 | TAIOBA | 2,00
00000000001526 | ALHO KG | 20,00



considerando que a current_date = 07/11/2017
deveria ficar asim..
------------------------------------------------------------------------------------------------------
cod_barras | descrição | preco
--------------------------------------------------------------------------------------------------------
00000000000017 | PAO DE SAL | 0,30
00000000000122 | PEPSI 1 5L | 5,00
00000000000987 | TAIOBA | 2,00
00000000001526 | ALHO KG | 15,00


considerando que a current_date = 11/11/2017
deveria ficar asim..
------------------------------------------------------------------------------------------------------
cod_barras | descrição | preco
--------------------------------------------------------------------------------------------------------
00000000000017 | PAO DE SAL | 0,50
00000000000122 | PEPSI 1 5L | 5,00
00000000000987 | TAIOBA | 2,00
00000000001526 | ALHO KG | 20,00



ou seja, preciso que um item que exista na tabela 2 dentro de uma data especifica pegar o preco da tabela 2 e não da tabela 1...

vai pegar o valor da tabela 1, se não estiver contido na tabela 2 e dentro da data vigente..

quem puder ajudar... ta um pouco difícil 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dica , faça um union

 

da tabela1

 

com um join da tabela taleba1 e tabela2 , o join para obetar a descrição , filtrando aqui a data,

between DT_ini and DT_FIM

 

coloque este union em uma tabela virtual e dela extraia o menor preco

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por daemon
      Tenho 3 selects assim com varias categorias...
       
              $sql = "SELECT * FROM topicos          WHERE idcategoria = $idcategoria          AND pubdate BETWEEN NOW() - INTERVAL $intervalo1_horas_ou_minutos $tipo_intervalo1_horas_mnutos AND          NOW() - $intervalo2_horas_ou_minutos ORDER BY pubdate DESC LIMIT 1"; Preciso que na minha pagina principal (index) mostre este registro por 10minutos.. passando de 10 minutos mostra o resultado do proximo select (categoria)..
    • Por ILR master
      Fala pessoal.
      Tudo bem?
       
      Tenho o seguinte código que funcionda perfeitamente:
       
      date_default_timezone_set("America/Sao_Paulo");
      $d_inicio= date('Y-m-d');
      $d_final= date('Y-m-d', strtotime('+30  day'));
       
      Mas eu quero definir a quantidade de dias pegando o valor que a variável:
       
      date_default_timezone_set("America/Sao_Paulo");
      $tempo = 30;
      $d_inicio= date('Y-m-d');
      $d_final= date('Y-m-d', strtotime('+$tempo  day'));
       
      Mas quando declaro com variável não funciona.
      Obrigado pela ajuda.
    • Por ILR master
      Fala galera, tudo bem?
       
      Tenho o seguinte codigo:
       
       class Data {
      public static function ExibirTempoDecorrido($date)
      {
          if(empty($date))
          {
              return "Informe a data";
          }
          $periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década");
          $duracao = array("60","60","24","7","4.35","12","10");
          $agora = time();
          $unix_data = strtotime($date);
          // check validity of date
          if(empty($unix_data))
          {  
              return "Bad date";
          }
          // is it future date or past date
          if($agora > $unix_data) 
          {  
              $diferenca     = $agora - $unix_data;
              $tempo         = "atrás";
          } 
          else 
          {
              $diferenca     = $unix_data - $agora;
              $tempo         = "agora";
          }
          for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++) 
          {
              $diferenca /= $duracao[$j];
          }
          $diferenca = round($diferenca);
          if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
          return "$diferenca $periodos[$j] {$tempo}";
      }
      }
       
      Funciona redondinho se o valor retornado for de algumas horas, mas...
      Quando passa de dois meses, ele retorna a palavra mess. Deve ser por conta dessa linha
      if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
       
      Quero que modre:
       
      2 meses atrás
      e não
      2 mess atrás.
       
      Espero que tenham entendido.
       
      Valeu
    • Por ILR master
      Boa tarde, pessoal.
      Espero que todos estejam bem.
       
      Seguinte:
      Tenho a seguinte consulta:
       
      $usuarios= "SELECT * FROM usuarios";
      $query= mysqli_query($conexao, $usuarios) or die ("Usuário não encontrado");
      $usuario = mysqli_fetch_array($query);
       
      Quero pegar apenas o campo 'nome' da tabela 'usuarios' e colocar todos os resultados da seguinte forma:
       
      $nomes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila");
       
      Agradeço desde já.
      Abs
       
       
    • Por FabianoSouza
      Eu preciso exibir duas informações em minha consulta:
      1) A quantidade de pessoas inscritas numa turma de treinamento (isso é feito com um simples COUNT)
      2) Uma flag de excesso de inscrições na turma. Seria obtido pela comparação entre a quantidade máxima permitida (já existe esse campo) e o COUNT feito acima.
       
      Até aqui sem problemas.
       
      O que quero é evitar fazer duas contagens (1 para saber a quantidade de inscritos, e outra para gerar a flag de excesso de inscrições).
       
      Há uma forma de utilizar UMA contagem para atender as duas necessidades?
       
      Meu código está assim:
       
      ... --AQUI FAZ A COMPARAÇÃO PARA GERAR A FLAG DE EXCESSO DE INSCRIÇÕES , CASE WHEN (SELECT COUNT(*) FROM dbo.tab AS ITT WHERE ITT.codTurmaDeTreina = T.id) > T.lotacaoMax Then T.nome + '&nbsp;'+'<span class=%22icon-aviso fcolor-critico%22 style=%22font-size:18px%22 title=Excesso&nbsp;de&nbsp;inscrições></span>' --AQUI FAZ A CONTAGEM DE INSCRIÇÕES , (SELECT COUNT(*) FROM dbo.tab AS ITT WHERE ITT.codTurmaDeTreina = T.id) AS 'Inscrições'  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.