Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, preciso de uma ajuda.
Estou fazendo um consulta no meu banco de dados em duas tabelas mas preciso usar um IF para isso, sei a lógica e tentei fazer de algumas formas mas não consegui.
Tenho duas tabelas
--
-- Estrutura da tabela tb_teste
--
CREATE TABLE IF NOT EXISTS `tb_teste` (
`ID` int(11) NOT NULL auto_increment,
`preco` float(40,2) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
--
-- Extraindo dados da tabela tb_teste
--
INSERT INTO `tb_teste` (`ID`, `preco`) VALUES(1, 0.00);
INSERT INTO `tb_teste` (`ID`, `preco`) VALUES(2, 100000.00);
-- --------------------------------------------------------
--
-- Estrutura da tabela tb_teste_temp
--
CREATE TABLE IF NOT EXISTS `tb_teste_temp` (
`ID` int(11) NOT NULL auto_increment,
`preco` float(40,2) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
--
-- Extraindo dados da tabela tb_teste_temp
--
INSERT INTO `tb_teste_temp` (`ID`, `preco`) VALUES(1, 50000.00);
INSERT INTO `tb_teste_temp` (`ID`, `preco`) VALUES(2, 100000.00);
------------------------------------------------------------------------
A lógica da minha consulta seria a seguinte
Selecionar na tabela tb_teste pelo preço de 10000.00 ente(between) 100000.00
Ai vem a parte que não estou conseguindo fazer.
Se o tb_teste.preco = 0.00 então selecione na tb_teste_temp pelo preço de 10000.00 ente(between) 100000.00
Meu Select da primeira tb_teste ficou assim a unica coisa que não estou conseguindo fazer é a condição.
SELECT tb_teste.ID FROM tb_teste WHERE (tb_teste.preco between '10000.00' and '100000.00')
Obrigado
tenta, adapta o between ae no meio
SELECT
`ID`,
if( `preco` = 0,( SELECT
`preco`
FROM
`tb_teste_temp`
WHERE
`ID` = `tb_teste`.`ID`
), `preco` ) AS preco
FROM
tb_testeVictor acho que é isso, mas você sabe se o between vou ter que colocar nos 2 Selects, pois fiz um teste colocando nos dois mas não me traz o resultado da tabela temp
SELECT
ID,
if( preco = 0,( SELECT
preco
FROM
tb_teste_temp
WHERE
ID = tb_teste.ID and (tb_teste_temp.preco between '10000.00' and '100000.00')
), preco ) AS preco
FROM
tb_teste Where (tb_teste.preco between '10000.00' and '100000.00')em tipo numérico (inteiro, real, ...) não utilize aspas
errado
between '10000.00' and '100000.00'
certo
between 10000.00 and 100000.00
você poderia criar 2 views pra isso, mas ae ja eh area de sql...