Inquiridor
Sentença com duas tabelas relacionadas (fácil, mas não sai)

Pergunta
-
Tenho uma tabela de cadastro de imóveis com o código do imóvel e seus campos.
Outras três tabelas de características dos imóveis com o código do imóvel e o código da característica;
Imóveis Lazer Infra-Estrutura Instalações
id_imóvel id_Lazer id_infra id_instalacoes
id_imovel id_imovel id_imovel
Todas elas relacionadas como o campo id_imovel.
Preciso de uma consulta que me retorne todos os registros (id_imovel) que contenham as diversas opções de Lazer, Infra-estrutura e Instalações.
Algo como, todos os registros das tabelas lazer, infra-estrutura e instalações que tenham o id_lazer=2 e id_lazer=3 e id_lazer=4 e id_infra=1 e id_infra=2 e id_instalacao=2 e id_instalacao=4
Grosseiramente ;
SELECT imovel.id_imovel, imovel_infra_estrutura.id_infra_estrutura, imovel_instalacoes.id_instalacoes, imovel_lazer.id_lazer
FROM imovel INNER JOIN
imovel_infra_estrutura ON imovel.id_imovel = imovel_infra_estrutura.id_imovel INNER JOIN
imovel_instalacoes ON imovel.id_imovel = imovel_instalacoes.id_imovel INNER JOIN
imovel_lazer ON imovel.id_imovel = imovel_lazer.id_imovel
WHERE (imovel_infra_estrutura.id_infra_estrutura = 2 AND imovel_infra_estrutura.id_infra_estrutura = 3) AND (imovel_instalacoes.id_instalacoes = 4) AND
(imovel_lazer.id_lazer = 14)Entenderam? Se eu coloco apenas uma das características de cada tabela e existe um id_imovel em cada tabela, funciona, mas se eu quero mais de um registro com o mesmo campo não funciona.
Tenho q fazer um select dentro de outro select (sub-consulta)? ou devo mesmo fazer 3 consultas??
terça-feira, 4 de dezembro de 2007 18:06
Todas as Respostas
-
Oi,
Esse tipo de dúvida é mais pro MSDN, mas vamos quebrar o galho. Não sei se vai funcionar, mas tenta o seguinte:
SELECT imovel.id_imovel, imovel_infra_estrutura.id_infra_estrutura, imovel_instalacoes.id_instalacoes, imovel_lazer.id_lazer
FROM imovel LEFT JOIN
imovel_infra_estrutura ON imovel.id_imovel = imovel_infra_estrutura.id_imovel AND (imovel_infra_estrutura.id_infra_estrutura = 2 AND imovel_infra_estrutura.id_infra_estrutura = 3) LEFT JOIN
imovel_instalacoes ON imovel.id_imovel = imovel_instalacoes.id_imovel AND (imovel_instalacoes.id_instalacoes = 4) LEFT JOIN
imovel_lazer ON imovel.id_imovel = imovel_lazer.id_imovel AND (imovel_lazer.id_lazer = 14)Abs,
terça-feira, 4 de dezembro de 2007 19:34 -
Cara, não deu certo, me trouxe todos os registros da tabela com a diferença de que os que não continham nenhuma das condições retornaram com os capmos Null, assim mesmo eu pensei em aproveitar mas na verdade onde eu tenho mais d eum critério por campo tb aparece Null e com isso não tenho identificar quais são os registros que cumprem as condições.
Vou tentar simplificar:
ID_Imovel - ID_Lazer
01 - 11
01 - 12
01 - 15
02 - 11
02 - 12
03 - 11
03 - 15
Preciso todos os ID_Movel que tenham ID_Lazer= 11 e 12, ou seja, dois registros com o mesmo id_movel e diferentes id_lazer, seriam;01 - 11
01 - 12
02 - 11
02 - 12
Mesmo assim obrigado, aos poucos vou chegando lá, vc diz q devo postar no MSDN??
terça-feira, 4 de dezembro de 2007 19:46 -
Oi Leandro,
É que como é uma comunidade de infra-estrutura, é melhor postar no MSDN.
O link é: http://forums.microsoft.com/MSDN-BR/ShowForum.aspx?ForumID=660&SiteID=21
Falows,
quarta-feira, 5 de dezembro de 2007 14:22