Ir para conteúdo

POWERED BY:

Arquivado

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

ankhenaton

Consulta em várias tabelas com vários valores

Recommended Posts

Olá.

 

Estou com um problema em um sistema e imóveis que estou fazendo.

 

Tenho a tabela imoveis, caracteristicas e imoveis_caract.

 

Preciso fazer uma consulta onde um imóvel pode ter mais de uma característica.

 

Neste exemplo está funcionando normal (buscando só a característica 1):

 

SELECT imoveis.id_imovel, imoveis.ref, imoveis.garagens, imoveis.dormitorios, imoveis.fotos, imoveis.suites, imoveis.banheiros, imoveis.valor, caracteristicas.caracteristica FROM imoveis, caracteristicas, imoveis_caract WHERE imoveis_caract.id_caract = '1' AND caracteristicas.id_caract = imoveis_caract.id_caract GROUP BY id_imovel

Caso eu selecione mais de uma característica o consulta já não retorna resultados:

 

SELECT imoveis.id_imovel, imoveis.ref, imoveis.garagens, imoveis.dormitorios, imoveis.fotos, imoveis.suites, imoveis.banheiros, imoveis.valor, caracteristicas.caracteristica FROM imoveis, caracteristicas, imoveis_caract WHERE imoveis_caract.id_caract = '1' AND imoveis_caract.id_caract = '2' AND caracteristicas.id_caract = imoveis_caract.id_caract GROUP BY id_imovel

Já tentei usar assim, mas está retornando todos os imóveis que possuem a característica 1 ou a característica 2, sendo que eu queria que retornassem só os imóveis que tivessem a 1 e a 2:

 

SELECT imoveis.id_imovel, imoveis.ref, imoveis.garagens, imoveis.dormitorios, imoveis.fotos, imoveis.suites, imoveis.banheiros, imoveis.valor, caracteristicas.caracteristica FROM imoveis, caracteristicas, imoveis_caract WHERE imoveis_caract.id_caract IN (1,2) AND caracteristicas.id_caract = imoveis_caract.id_caract GROUP BY id_imovel

 

Alguém pode me dar uma dica de como eu faria essa consulta para retornar só os imóveis com as características 1 e 2 (ou mais)?

 

Desde já agradeço a atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

select

i.id_imovel,

i.ref,

i.garagens,

i.dormitorios,

i.fotos,

i.suites,

i.banheiros,

i.valor,

 

c.caracteristicas

 

FROM

imoveis as i,

caracteristicas as c,

imoveis_caract as ic,

 

WHERE

ic.id_caract IN

(select *from c.id_caract = ic.id_caract group by id_imovel);

se você kiser os 2 IDs 1 e 2

 

você bota

WHERE

(1) IN

(select *from c.id_caract = ic.id_caract group by id_imovel)

AND

(2) IN

(select *from c.id_caract = ic.id_caract group by id_imovel);

espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda koga021.

 

Só fiquei em dúvida nesta parte: select *from c.id_caract = ic.id_caract group by id_imovel

 

É assim mesmo? Não teria que ter um select * from tabela ?

 

Pergunto porque o código não funcionou.

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.