Ir para conteúdo
Santos_2015

If dentro de where [RESOLVIDO]

Recommended Posts

Galera,

preciso de uma ajuda aqui,

tenho campo do tipo data(Y-m-d) , dependendo de minha busca vou usa-ló com between ou não, segue sql:

 

...
where
	situacao like :situacao_pagamento 
and
	data_pagamento
		if(:data_inicio	and :data_fim = null,is null,
		between	:data_inicio and :data_fim)

tentei fazer com if

se data_incio e data_final (parâmetros passados) for null, recebe is null(para comparar com o campo data_pagamento), caso contrario iriar entrar no beween...

mas não rolou...

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

( (:data_inicio is null and :data_fim is null)

  or

(Data_pagamento between :data_inicio and :data_fim is null) )

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 07/09/2018 at 14:04, Motta disse:

( (:data_inicio is null and :data_fim is null)

  or

(Data_pagamento between :data_inicio and :data_fim is null) )

 

 

Exatamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A performance pode ser um problema todavia,

Compartilhar este post


Link para o post
Compartilhar em outros sites
15 horas atrás, Motta disse:

A performance pode ser um problema todavia,

 

Já verifiquei isso, não teve uma boa performance, mas estou avaliando a viabilidade de fazer isso,pois é um select com "quebra", teve um impacto inesperado nas informações.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Talvez com coalesce

 

Datapagamento between coalesce(:datade,datapagamento) and coslesce(:dataate,datapagamento)

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 09/09/2018 at 15:47, Motta disse:

Talvez com coalesce

 

Datapagamento between coalesce(:datade,datapagamento) and coslesce(:dataate,datapagamento)

 

 não retornou nada, já havia tentado.. tentei dessa forma tambem:

           data_pagamento  between  coalesce(:data_inicio,null) and coalesce(:data_fim,null)

 

aqui está o problema estou verificando entre null e null, quando não passo nenhuma data.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faço assim como disse no Oracle com NVL.

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Motta disse:

Faço assim como disse no Oracle com NVL.

 

No mysql não existe o NVL, não seria a mesma coisa do coalesce ou if null?

Compartilhar este post


Link para o post
Compartilhar em outros sites
20 horas atrás, Motta disse:

Para mim seria ...

Certo, mas tentei dessa forma, não consegui resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 10/09/2018 at 22:48, Motta disse:

Para mim seria ...

Resolvi dessa forma:

and

((:data_inicio is null and :data_fim is null) 
            or
(:data_inicio is not null and :data_fim is not null) and (desp.data_pagamento  between :data_inicio and :data_fim))

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por wilson c. antonio
      Eu recebo os dados via post, nome e cpf, mas minha consulta não retorna nenhum dado da tabela consultada.
      O que está errado?
      <?php include("../_conexao/funcoes.php"); $con=conectado(); #conferindo os dados recebidos via $_POST if(isset($_POST['btnLogin'])){ #addslashes(trim)remove as sobras de texto em branco dos campos $nome = addslashes(trim($_POST['nNome'])); $cpf = addslashes(trim($_POST['nCPF'])); } $sql=$con->prepare("SELECT * FROM bolsa WHERE bolsa.cpf = $cpf "); $sql->execute(); while($linha=$sql->fetch(PDO::FETCH_ASSOC)){ //paginação - somar quantidade de usuários $id_bolsa = $linha['id_bolsa']; $nome = $linha['nome']; $sobrenome = $linha['sobrenome']; $ddata = date('d/m/Y', strtotime($linha['dtprv'])); $nota = $linha['nota']; $acertos = $linha['acertos']; } ?> <input type="text" value="<?php echo $nota?>" readonly="true"/> <input type="text" value="<?php echo $cpf?>" readonly="true"/>  
    • Por Thiiiziiin
      Olá pessoal, como vão?
      Estou com o seguinte problema, tenho uma tabela em um banco de dados e estou pegando os valores para gerar gráficos, com a API Charts.js.
      Estou fazendo um gráfico dinâmico, em tempo real, porém, se eu insiro um dado no banco de dados, não consigo alterar no gráfico (é preciso dar refresh na página para alterar).
      Toda a conexão com o banco de dados está correta, pois se eu atualizo a página, o gráfico altera com os valores que defini.

      Eu fiz testes utilizando o math.random(), e funcionou, atualizava conforme os valores aleatórios gerados por essa função.
      Quando defino para ler do banco de dados, fica estático.
      Minha conclusão é que a variável de conexão do banco de dados não se altera em tempo real.

      Existe a possibilidade de atualizar a variável a cada segundo em PHP?
      Segue o código que estou fazendo:
       
      <?php include('conexao.php'); $select = $PDO->query("SELECT corrente FROM tbdados ORDER BY id DESC limit 1"); $select->execute(); $result = $select->fetch(); // retorno do banco de dados mysql_close($select); ?> // Abaixo é o javascript da API Charts.js modificada <script type="text/javascript"> var ctx = document.getElementById('myChart').getContext("2d"); var gradientStroke = ctx.createLinearGradient(0, 0, 0, 0); gradientStroke.addColorStop(0, '#FFC800'); var pointStroke = ctx.createLinearGradient(0, 0, 0, 0); pointStroke.addColorStop(0, '#3f3f3f'); var gradientFill = ctx.createLinearGradient(0, 250, 0, 50); gradientFill.addColorStop(0, "rgba(63, 63, 63, 0.7)"); gradientFill.addColorStop(1, "rgba(255, 182, 0, 1)"); var contador = 0; var corrente = <?php echo $result['corrente']; ?>; // variável que foi capturada do banco var segundos = 1000; <?php echo $rows; ?> var myChart = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", "", "", "", "" ], datasets: [{ label: "Corrente (A)", borderColor: gradientStroke, pointBorderColor: gradientStroke, pointBackgroundColor: gradientStroke, pointHoverBackgroundColor: pointStroke, pointHoverBorderColor: gradientStroke, pointBorderWidth: 5, pointHoverRadius: 10, pointHoverBorderWidth: 1, pointHitRadius: 25, pointRadius: 3, fill: true, backgroundColor: gradientFill, borderWidth: 2, data: [, , , , , , , , , ,] }] }, options: { legend: { position: "bottom", labels: { fontColor: 'rgba(255,255,255,0.5)' } }, scales: { yAxes: [{ ticks: { fontColor: "rgba(255,255,255,0.5)", fontStyle: "bold", beginAtZero: true, maxTicksLimit: 10, padding: 20, }, gridLines: { drawTicks: false, display: false } }], xAxes: [{ gridLines: { zeroLineColor: "transparent" }, ticks: { padding: 20, fontColor: "rgba(255,255,255,0.5)", fontStyle: "bold" } }] } } }); function adddata(){ myChart.data.labels.push(contador + " segundos"); myChart.data.labels.splice(0, 1); myChart.data.datasets[0].data.splice(0, 1); console.log(myChart.data.datasets[0].data); myChart.data.datasets[0].data.push(corrente); myChart.update(); contador+=(segundos / 1000); } setInterval(function(){ adddata(); },segundos); var option = { showLines: true, scales: { yAxes: [{ display: true, ticks: { beginAtZero:true } }] } }; $(function() { setTime(); function setTime() { var date = new Date().getTime(); var string = "Corrente:<br/><span class='corrente_valor'>"+corrente+"</span><br/>Amperes"; setTimeout(setTime, segundos); $('#correnteCirculo').html(string); } }); </script>  
    • Por PedroTodorovski
      Quais a vantagens e as desvantagens de desenvolver um menu dinâmico (banco de dados) ao invés de um menu estático? Estou desenvolvendo um ecommerce e tenho essa dúvida.
    • Por brunobos21
      Olá, eu criei um formulario que salva os dados em um banco de dados mysql, e criei uma pagina de relatorio para mostrar todo mundo que se cadastra nesse banco, até ai tudo certo, só que eu tenho um campo "Status" que eu queria colocar um checkbox para o administrador poder marcar esse campo e mudar no mysql o valor do Status para 1 sempre que clicar no botão atualizar, e se o administrador desmarcar antes apertar o botão Atualizar, não mudar na tabela. Já pesquisei em tudo quer canto e não achei, se puderem me ajudar enviando algum modelo de código ou algum tópico aqui do forúm que ja fale sobre isso, agradeço. Aqui está meu código:
      <?php // definições de host, database, usuário e senha $host = "host"; $banco = "banco"; $user = "user"; $pass = "pass"; $tbl_name="tabela";   $nome = $_POST['nome']; $numero = $_POST['numero']; $email = $_POST['email']; $cidade = $_POST['cidade']; $whatsapp = $_POST['whatsapp']; $data = $_POST['data']; $status = $_POST['status'];   // conecta ao banco de dados $con = mysql_pconnect($host, $user, $pass) or trigger_error(mysql_error(),E_USER_ERROR); // seleciona a base de dados em que vamos trabalhar mysql_select_db($banco, $con); // cria a instrução SQL que vai selecionar os dados $query = sprintf("SELECT * FROM Pesquisas"); // executa a query $dados = mysql_query($query, $con) or die(mysql_error()); // transforma os dados em um array $linha = mysql_fetch_assoc($dados); // calcula quantos dados retornaram $total = mysql_num_rows($dados); ?> <!DOCTYPE html> <html lang="en"> <head>     <title>Relatorio</title>     <meta charset="latin1_swedish_ci">     <meta name="viewport" content="width=device-width, initial-scale=1"> <!--===============================================================================================-->       <link rel="icon" type="image/png" href="images/icons/favicon2.ico"/> <!--===============================================================================================-->     <link rel="stylesheet" type="text/css" href="vendor/bootstrap/css/bootstrap.min.css"> <!--===============================================================================================-->     <link rel="stylesheet" type="text/css" href="fonts/font-awesome-4.7.0/css/font-awesome.min.css"> <!--===============================================================================================-->     <link rel="stylesheet" type="text/css" href="vendor/animate/animate.css"> <!--===============================================================================================-->     <link rel="stylesheet" type="text/css" href="vendor/select2/select2.min.css"> <!--===============================================================================================-->     <link rel="stylesheet" type="text/css" href="vendor/perfect-scrollbar/perfect-scrollbar.css"> <!--===============================================================================================-->     <link rel="stylesheet" type="text/css" href="css/util.css">     <link rel="stylesheet" type="text/css" href="css/main.css"> <!--===============================================================================================--> <script src="vendor/jquery/jquery-3.2.1.min.js"></script> <script type="text/javascript"> //--> </script> </head> <body> <form action=" " method="post">     <div class="limiter">         <div class="container-table100">             <div class="wrap-table100">                 <div class="table100">                     <table>                         <thead>                             <tr class="table100-head">                                 <th class="column1">Nome</th>                                 <th class="column2">Numero</th>                                 <th class="column3">Cidade</th>                                 <th class="column4">E-mail</th>                                 <th class="column5">Whatsapp</th>                                 <th class="column6">Tipo</th>                                 <th class="column6">Data</th>                                 <th class="column6">Status</th>                             </tr>                         </thead>                           <?php                         // se o número de resultados for maior que zero, mostra os dados                         if($total > 0) {                     // inicia o loop que vai mostrar todos os dados                     do {                         ?>                         <tbody>                                 <tr>                                     <td class="column1"><?=$linha['nome']?></td>                                     <td class="column2"><?=$linha['numero']?></td>                                     <td class="column3"><?=$linha['cidade']?></td>                                     <td class="column4"><?=$linha['email']?></td>                                     <td class="column5"><?=$linha['whatsapp']?></td>                                     <td class="column6"><?=$linha['tipo']?></td>                                     <td class="column6"><?=$linha['data']?></td>                                     <td class="column6">                                     <input type=checkbox name="banco[]" value="1"><?=$linha['status']?>                                     </td>                                 </tr>                                </tbody>                         <?php                     // finaliza o loop que vai mostrar os dados                     }while($linha = mysql_fetch_assoc($dados));                         // fim do if                         }                         ?>                     </table>                     <div class="container-contact2-form-btn">                                 <div class="wrap-contact2-form-btn">                                     <div class="contact3-form-bgbtn"></div>                                     <button class="contact2-form-btn" type="submit" value="Enviar" name="enviar">                                         Atualizar                                     </button>                                 </div>                             </div>                 </div>             </div>         </div>     </div> </form>   <!--===============================================================================================-->       <script src="vendor/jquery/jquery-3.2.1.min.js"></script> <!--===============================================================================================-->     <script src="vendor/bootstrap/js/popper.js"></script>     <script src="vendor/bootstrap/js/bootstrap.min.js"></script> <!--===============================================================================================-->     <script src="vendor/select2/select2.min.js"></script> <!--===============================================================================================-->     <script src="js/main.js"></script> </body> </html> <?php // tira o resultado da busca da memória mysql_free_result($dados); ?>
×

Informação importante

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