Lisbao 0 Denunciar post Postado Abril 4, 2007 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
Lisbao 0 Denunciar post Postado Abril 4, 2007 Nessa caso acredito que seja necessário fazer uma procedure.Como assim fazer uma Procedure? Compartilhar este post Link para o post Compartilhar em outros sites
Lisbao 0 Denunciar post Postado Abril 5, 2007 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
Eclesiastes 2 Denunciar post Postado Abril 7, 2007 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
CLoud_BR 0 Denunciar post Postado Agosto 10, 2007 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
Roberto F. 0 Denunciar post Postado Maio 21, 2008 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
Paulo Caesar 0 Denunciar post Postado Maio 21, 2008 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
Denis Mattos 0 Denunciar post Postado Junho 9, 2008 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
Paulo Caesar 0 Denunciar post Postado Junho 9, 2008 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