Jump to content

Recommended Posts

Estou com uma dúvida. É possível determinar um select a partir de uma escolha?
Ex. 

SELECT
CASE
  WHEN a < b THEN select * from tabela1
  WHEN d < e THEN select * form tabela2
END
FROM tabela;

Algo parecido. Se uma condição for atendida select1 , se outra condição for atendida: select2.

O que acontece: estou com um relatorio que preciso criar no winthor e não consigo melhorar isso. Tenho de fazer três relatorios como solução. Se eu consigo implantar isso, eu faria somente um relatorio. 

Tipo se marcar um campo, sai um relatorio. Se marcar outro, saí outro relatorio.

Share this post


Link to post
Share on other sites

Os relatórios seriam muito diferentes ?

Explique melhor o problema.

Share this post


Link to post
Share on other sites

No sistema winthor existe uma rotina que me permite criar relatorios.  Eu preencho o código(select), ele me traz os dados e me premite montar um relatorio com os dados trazidos pelo select.
O que acontece: quando eu monto um relatorio por exemplo de todas as vendas no período entre datas, a rotina me permite criar um tipo de variável colocando um ' : ' antes de qualquer palavra. exe:    ':data1'.

ex:

SELECT vlvendainicial, vlvendatotal FROM pcvendas  WHEN dtvendas BETWEENS :data1 AND :data2

O problema é: se eu preciso criar um relatorio em que alem de filtrar os valores entre datas, tambem escolha se quer ou não os valore maior que R$100,00, eu preciso criar um outro relatorio. Então o que eu queria saber é se é possível fazer o seguinte:

 

IF :resp = 'S' THEN
  SELECT * FROM  teste

ELSIF :resp = 'N' THEN
   SELECT * FROM TESTE2 
END IF;

Mais ou menos isso

Share this post


Link to post
Share on other sites

Este winfor não permite criar uma outra variável para valor informado ?

 

Algo como

 

 

Where

....

And valor >= :valor

 

 

Informaria zero para todos

Share this post


Link to post
Share on other sites
Em 15/01/2019 at 21:44, mr22robot disse:

No sistema winthor existe uma rotina que me permite criar relatorios.  Eu preencho o código(select), ele me traz os dados e me premite montar um relatorio com os dados trazidos pelo select.
O que acontece: quando eu monto um relatorio por exemplo de todas as vendas no período entre datas, a rotina me permite criar um tipo de variável colocando um ' : ' antes de qualquer palavra. exe:    ':data1'.

ex:


SELECT vlvendainicial, vlvendatotal FROM pcvendas  WHEN dtvendas BETWEENS :data1 AND :data2

O problema é: se eu preciso criar um relatorio em que alem de filtrar os valores entre datas, tambem escolha se quer ou não os valore maior que R$100,00, eu preciso criar um outro relatorio. Então o que eu queria saber é se é possível fazer o seguinte:

 


IF :resp = 'S' THEN
  SELECT * FROM  teste

ELSIF :resp = 'N' THEN
   SELECT * FROM TESTE2 
END IF;

Mais ou menos isso

 

Bom dia.

Acredito que o problema nem seja esse. O problema é que as condições no Oracle não me permite retornar um select inteiro igual eu mostrei no exemplo. 
Ou há alguma forma?

Share this post


Link to post
Share on other sites

Seria ?

SELECT vlvendainicial, vlvendatotal 
FROM  pcvendas  
WHERE dtvendas BETWEEN :data1 AND :data2
AND   vlvendatotal >= :valor

Infornado o valor de corte
Atente a síntaxe do SQL !

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By agness
      a imagem é uma parte de uma tabela extensa.
      como eu faço uma consulta por exemplo para jogador igual à 1, 3, 5 e liga igual à 1?
      isso é para uma verificação se existe uma liga com exatamente os jogadores 1, 3 e 5, nem mais nem menos
      espero ter sido claro
    • By opl12
      Olá Mestres
      Podem dar uma direção?
      Estou apanhando em algo que aparentemente é fácil
      Preciso: 
                  *Tenho um Banco de Dados com as Colunas: Id, nome, password, data, nivel             ... na coluna "nivel" tem duas informações ou é "staff" ou é "operacao"               *no 1º Select ele vai validar se o usuário e a senha estão corretos conforme no Banco de Dados do PhpMyAdmin             pelas variáveis $nome e $password               *no 2º Select ele valida o nível de acesso, se é "staff" ou "operacao"             se o $nome pertencer a um "staff".. então abre o "Site A"... se pertencer a um "operacao" vai para o "Site B"  
      <!DOCTYPE html> <html lang="pt-br"> <head> <title>Comprovar Usuário</title> <meta charset="utf-8"> </head> <body> <?php try { $base=new PDO("mysql:host=localhost;dbname=painel","root",""); $base->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // ....... select para validar login e senha se estão ok $sql="SELECT * FROM login WHERE nome= :nome AND password= :password"; $resultado=$base->prepare($sql); $nome=($_POST["nome"]); $password=($_POST["password"]); $resultado->bindValue(":nome",$nome); $resultado->bindValue(":password",$password); $resultado->execute(); $numero_registro=$resultado->rowCount(); //Validar Camada de Nível $sql2="SELECT * FROM login WHERE name= :nome AND nivel = 'staff'"; $resultado2=$base2->prepare($sql2); $nome=($_POST["nome"]); $resultado2->bindValue(":nome",$nome); $resultado2->execute(); $numero_registro2=$resultado2->rowCount(); if($numero_registro!=0) { //echo "<h1>Logado com Sucesso</h1>"; ...Se Login e Senha estão ok, então abre a página session_start(); $_SESSION["usuario"] = $_POST["nome"]; header("Location:reports.php"); }else { echo "Senha incorreta, favor verificar! <br><br>"; echo '<a href="index.php">Clique aqui para tentar novamente!</a>'; //header("Location:index.php"); } }catch(Exception $e) { die("Error" . $e->getMessage()); } ?> </body> </html>  
    • By opl12
      Olá Mestres,
      Não achei um tópico com este assunto
       
      No Código abaixo, eu dou um echo e me retorna o valor de um array,
      *que é o resultado de um SELECT feito no Banco de Dados PhpMyAdmin
      *no banco tenho a tabela LOGIN, com as colunas: Nome, Password, Nivel
       
      no PHP eu carrego as variáveis $nome e $password
      com isso eu faço um select com uma condição na coluna "nivel" .. para me trazer apenas o resultado onde consta a palavra "staff" na coluna "nivel"
       
      ao dar um echo:
      echo $key.": ".$value."<br>";  
      o PHP me retorna:
      nome: jeferson
      password: 123
      nivel: staff
       
      ***a pergunta:
      Tem como eu gravar o resultado da coluna "nivel" ( que neste caso é "staff" ) em uma variável?? ao ponto de dar um echo e aparecer apenas a palavra "staff" ?
       
      Se puderem me ajudar, já agradeço
       
      <!DOCTYPE html> <html lang="pt-br"> <head> <title>Comprovar Usuário</title> <meta charset="utf-8"> </head> <body> <?php $nome = "jeferson"; $password = "123"; try { $base=new PDO("mysql:host=localhost;dbname=painel","root",""); $base->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql="SELECT nome, password, nivel FROM login WHERE nome= :nome AND password= :password"; $resultado=$base->prepare($sql); $resultado->bindValue(":nome",$nome); $resultado->bindValue(":password",$password); $resultado->execute(); $result = $resultado->fetch(PDO::FETCH_ASSOC); foreach ($result as $key => $value) { echo $key.": ".$value."<br>"; } }catch(Exception $e) { die("Error" . $e->getMessage()); } ?> </body> </html>  
       
       
       
    • By lucianfpaula
      Olá, saudações a todos, eu tenho a seguinte duvida: preciso identificar se a data do dia esta dentro de um intervalo de datas, nos temos o seguinte sql
      "SELECT * FROM tb_cadastro WHERE datCadastro BETWEEN '2010/09/10' AND '2011/10/10'".
      O que preciso é saber se a data do dia este nesse intervalo. Tipo
      Data 01 = 01/02/2020
      Data 02 = 10/02/2020
      Data 03 = 05/02/2020
      se Data 03 estiver no intervalo de Data 01 e Data 02 faça algo se não faça nada
    • By asacap1000
      Salve Galera, tenho uma tabela no banco de dados que estão salvos os dados de fotos armazenadas, uma das tabela consta o caminho das mesmas.
      Hoje consigo buscar estas fotos, mostrar na tela do site tudo certo. Porém estou precisando adicionar um botão para o envio de email com estas imagens em anexos.
      Saberiam me dizer como posso fazer isso?
      Tenho um formulário com os campos Remetente: Nome / Email  - Destinatário: Nome / Email
      e o campo de input file porém as imagens não carregam. Fiz um teste assim:
       
      <div class="input_fields_wrap"> <?php while ($row = oci_fetch_object($stmt2)) { ?> <div><input type="file" name="fotos[]" value="<?=$string3?>" multiple></div> <? }?> </div> Ele carrega assim até lista a quantidade de imagens na consulta mas não carrega as imagens.
       

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.