Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia.
Tenho uma tabela Imoveis, uma tabela Caracteristicas, e uma tabela de relacionamento entre essas duas, chamada RelCaracImoveis
Um imóvel possui várias características, e uma característica pertence vários imóveis.
RelCaracImoveis só guarda o id do imóvel e o id da caracteristica, bem como seu valor.
Exemplo da estrutura de RelCaracImoveis:
id|imoveis_id|carac_id|valor
1| 38 | 2 | 2
2| 38 | 3 | 1
Nesse caso, eu estou dizendo que o imóvel 38 possui 2 quartos e 1 suíte.
Bom.. Pela minha estrutura, quero fazer um select na tabela de imoveis, juntamente com as caracteristicas, onde eu traga esses dados relacionados, dessa forma, semelhante a uma consulta de referência cruzada:
id|rua|salas|quartos|suites|vagas_garagem
38|xxx| 1 | 2 | 1 | 1
39|xxx| 1 | 3 | 2 | 2
Os campos id e rua, referem-se ao imóvel, já os demais, estão vindo da tabela de caracteristicas, através do relacionamento com o RelCaracImoveis e Imoveis.
Eu consegui fazer assim:
SELECT
rel_carac_imoveis.valor_carac
, rel_carac_imoveis.imoveis_id
, (case caracteristicas.id when 1 then true else false end) as sala_estar
, (case rel_carac_imoveis.caracteristicas_id when 2 then true end) as quartos
, (case rel_carac_imoveis.caracteristicas_id when 3 then true end) as suites
, (case rel_carac_imoveis.caracteristicas_id when 4 then true end) as vagas_garagem
FROM
rel_carac_imoveis, caracteristicas
Só que ele retorna os dados assim:
id|rua|salas|quartos |suites|vagas_garagem
38|xxx| 1 | null | null | null
38|xxx| null| null | nulL | null
38|xxx| null| null | nulL | null
38|xxx| null| null | nulL | null
38|xxx| null| null | nulL | null
38|xxx| null| null | nulL | null
38|xxx| null| null | nulL | null
38|xxx| null| null | nulL | null
38|xxx| null| null | nulL | null
Para cada valor de RelCaracImoveis relacionado ao imovel 38, ela retorna uma linha, mas tudo vem com null, exceto o primeiro. Se eu tentar agrupar pelo valor do imovel, ele também não retorna da forma esperada.
É isso. Alguma dica? Como refaço essa consulta? Alguma sugestão de alteração na estrutura?
Carregando comentários...