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

  • 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