Ir para conteúdo

Arquivado

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

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é....

Compartilhar este post


Link para o post
Compartilhar em outros 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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros 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é....

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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??

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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