Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
tenho uma tabela imoveis, e uma tabela imagens.
na tabela imoveis, tenho um campo imagem, onde guardarei o nome(ou id) da imagem principal, que será utilizada como miniatura.
na tabela imagens, guardo todas as imagens, inclusive a miniatura.
como fazer um select que, caso o campo imoveis.imagem for vazio, eu pegar o primeiro resultado da busca na tabela imagens?
algo assim:
SELECT
if(imv.imagem=null, max(img.nome_imagem), imv.imagem) as thumb
from imoveis imv
inner join
imagens img on (imv.id=img.imoveis_id)
group by imv.id
desse jeito aí funciona mais ou menos. mas acho que o max nao é o ideal. talvez algum first. e outra coisa. a verificação do if não está ocorrendo, ele está retornando a primeira imagem, independentemente de imv.imagem estiver ou não definida.
nao entendi, você quer mostrar uma imagem mesmo q nao tenha imagem?
Não.
É pq tenho dois lugares onde terei a imagem.
A tabela imagens, guarda todas os endereços de todas as imagens do sistema.
E na tabela principal, dos imoveis, tbm tem um campo pra guardar a imagem, que será a principal imagem daquele imóvel específico.
Se, não tiver nenhuma imagem definida na tabela dos imoveis, aih eu pego a primeira imagem daquele imovel na tabela das imagens.
Sacas?
No momento estou trazendo os dois valores.
select
imv.miniatura as imv_imagem,
img.imagem as img_imagem
from imoveis imv
inner join imagens img
on (imv.id=img.imoveis_id)
group by imv.id;
E depois faço o tratamento via programação.
Só que eu quero fazer diretamente na sql. Só que não está funcionando, conforme dito na mensagem principal.
ve se a idéia... funciona..
abraco
KUROLE
select IF (imv.miniatura is null, (select nome_imagem FROM tabela_de_imagem img WHERE imoveis.id = img.imoveis_id LIMIT 1), imv.miniatura as imv_imagem)
from imoveis group by imv.id;
Ja tentou usar um subselect?