Jump to content

POWERED BY:

Archived

This topic is now archived and is closed to further replies.

Lisbao

Sintaxe IF no mysql

Recommended Posts

SELECT p.descricao AS Descrição, p.pn AS Part_Number, p.marca AS Marca,p.modelo AS Modelo,			(r.preco_cli*$dolar) AS preco_cli, 			IF (p.estoque='s') THEN ((r.preco_rev*$dolar) AS preco_rev, (r.preco_cor*$dolar) AS preco_cor, (r.preco_gov*$dolar) AS preco_gov) ELSE ((r.preco*$dolar) AS preco) END IF			 FROM estoque_prod p INNER JOIN IF(p.estoque='s',estoque_prod_fis r,estoque_prod_virt r) ON(p.cod_prod=r.cod_prod) WHERE p.cod_prod = '$cod_prod'

O meu objetivo é: Se no campo estoque estiver marcado como 's' então entra na tabela estoque_prod_fis, caso contrário entra na tabela estoque_prod_virt e antes do FROM, coloca os campos definidos pra cada tabela...

 

Mas dá erro, e por isso queria pedir a ajuda de vcs...

 

obrigado desde já...

 

 

até....

Share this post


Link to post
Share on other sites

Dei uma pesquisada aqui e dá para fazer da forma como está fazendo sim.

SELECT p.descricao AS Descrição, p.pn AS Part_Number, p.marca AS Marca,p.modelo AS Modelo,            (r.preco_cli*$dolar) AS preco_cli,            IF (p.estoque='s', ((r.preco_rev*$dolar) AS preco_rev, (r.preco_cor*$dolar) AS preco_cor, (r.preco_gov*$dolar) AS preco_gov), ((r.preco*$dolar) AS preco))             FROM estoque_prod p INNER JOIN IF(p.estoque<span style ='color:orange'><span style ='color:orange'>='s',estoque_prod_fis r,estoque_prod_virt r) ON(p.cod_prod=r.cod_prod) WHERE p.cod_prod = '$cod_prod'

Muito legal esse recurso de IF, CASE, etc. Não conhecia!

Aqui no meu código nao funcionou...

Share this post


Link to post
Share on other sites

Você não pode colocar os alias dentro do if, pois a quantidade e nome das colunas de resultado devem ser fixas.

Share this post


Link to post
Share on other sites

Cara, faz o seguinte...tenta colocar nos padrões de sintaxe da Query do MySQL...Faz o select normal, mas no Where ou no Inner Join se for colocar mais de uma tabela à exibir...eh mais ou menos assim... If ( (condição 01) , (código da opção correta) , (código da opção falça) )no seu caso, que utilizou mais de um If e ElseIf faça assim... If ( (condição 01) , ( If ( (condição 02) , (código da opção correta 2) , (código da opção falça 2) )) , (código da opção falça 1) )deu pra visualizar melhor a idéia??? dentro da opção correta eu coloquei mais um If inteiro, mas tem que ter os mesmos padrões com as vírgulas e os parenteses sertinhos cara....If (condição1, certo1 = If (condição2, certo2, errado2), errado1 = If (condição3, certo3, errado3))falowsss... se tiver dúvida ainda entre em contato: fernando_pedrozo@hotmail.com

SELECT p.descricao AS Descrição, p.pn AS Part_Number, p.marca AS Marca,p.modelo AS Modelo,			(r.preco_cli*$dolar) AS preco_cli, 			IF (p.estoque='s') THEN ((r.preco_rev*$dolar) AS preco_rev, (r.preco_cor*$dolar) AS preco_cor, (r.preco_gov*$dolar) AS preco_gov) ELSE ((r.preco*$dolar) AS preco) END IF			 FROM estoque_prod p INNER JOIN IF(p.estoque='s',estoque_prod_fis r,estoque_prod_virt r) ON(p.cod_prod=r.cod_prod) WHERE p.cod_prod = '$cod_prod'
O meu objetivo é: Se no campo estoque estiver marcado como 's' então entra na tabela estoque_prod_fis, caso contrário entra na tabela estoque_prod_virt e antes do FROM, coloca os campos definidos pra cada tabela...Mas dá erro, e por isso queria pedir a ajuda de vcs...obrigado desde já...até....

Share this post


Link to post
Share on other sites

Bom dia,

eu também me encontro com o Mesmo Problema

 

já tentei de tudo

 

To usando MYSQL

Porém tentei com aspas com parenteses e nada,

retorna o mesmo erro

 

IF (bite_PrazoEntrega=0) THEN (0 as Prazo) ELSE (1 as Prazo) END IF

 

Alguém pode ajudar ai?

 

Valew

Share this post


Link to post
Share on other sites

a sintaxe é:

SELECT IF(`bite_PrazoEntrega` = 0, 0, 1) AS `Prazo`

 

você está confundindo com a sintaxe do case

SELECT CASE `bite_PrazoEntrega` WHEN 0 THEN  0 AS `Prazo` WHEN 1 THEN 1 AS `Prazo` END CASE

Share this post


Link to post
Share on other sites

O meu problema é mais ou menos parecido.. mas quando a variavel nao receber determinado valor o banco de dados nao recebe esta variavel

usando UPDATE tentei usar NULLIF IFNULL mas nenhum deu certo..

 

o exemplo q to tentando é esse

UPDATE noticias SET NULLIF($dados1,$zero) ,NULLIF($dados2,$zero),NULLIF($dados3,$zero),NULLIF($dados4,$zero) WHERE id='$id'

se $dados1 for igual a variavel $zero a variavel $dados1 ta fora, se $dados2 for igual a variavel $zero a variavel $dados2 ta fora... e assim vai

 

alguem sabe resolver isso??

Share this post


Link to post
Share on other sites

UPDATE `noticias` SET `campo1`=NULLIF($dados1,0),`campo2`=NULLIF($dados2,0),`campo3`=NULLIF($dados3,0),`campo4`=NULLIF($dados4,0) WHERE `id`='$id'

Resolvido? :P

Share this post


Link to post
Share on other sites

×

Important Information

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