Fórum Usando um Select dentro de um Inner JOIN #57088
18/10/2006
0
Olá estou tendo dificuldades em montar o seguinte select no Firebird, este select funcionou perfeitamente no MySQL.
select imv.ID_IMOVEL ´Index´, imvpais.nome ´Pais´, imvest.nome ´Estado´, imvloc.nome ´Localidade´, imvreg.nome ´Regional´, imvbro.nome ´Bairro´, tlgr.SIGLA ´Tp.´, lgr.NOMEOFICIAL ´Logradouro´, imv.nome ´Edf.´, imv.numero ´Num.´
FROM IMOVEL imv
INNER JOIN LOGRADOURO lgr ON imv.ID_LOGRADOURO = lgr.ID_LOGRADOURO
INNER JOIN TIPOLOGRADOURO tlgr ON lgr.ID_TIPOLOGRADOURO = tlgr.ID_TIPOLOGRADOURO
LEFT JOIN (SELECT imvagg_tmp.ID_IMOVEL, bro.ID_AGRUPGEO, bro.nome FROM IMOVEL_AGRUPGEO imvagg_tmp
INNER JOIN AGRUPGEO bro ON bro.ID_AGRUPGEO = imvagg_tmp.ID_AGRUPGEO AND bro.ID_TIPOGEOGRAFICO = ´B´
) imvbro ON imv.ID_IMOVEL = imvbro.ID_IMOVEL
LEFT JOIN (SELECT imvagg_tmp.ID_IMOVEL, est.ID_AGRUPGEO, est.nome FROM IMOVEL_AGRUPGEO imvagg_tmp
INNER JOIN AGRUPGEO est ON est.ID_AGRUPGEO = imvagg_tmp.ID_AGRUPGEO AND est.ID_TIPOGEOGRAFICO = ´R´
) imvreg ON imv.ID_IMOVEL = imvreg.ID_IMOVEL
LEFT JOIN (SELECT imvagg_tmp.ID_IMOVEL, est.ID_AGRUPGEO, est.nome FROM IMOVEL_AGRUPGEO imvagg_tmp
INNER JOIN AGRUPGEO est ON est.ID_AGRUPGEO = imvagg_tmp.ID_AGRUPGEO AND est.ID_TIPOGEOGRAFICO = ´L´
) imvloc ON imv.ID_IMOVEL = imvloc.ID_IMOVEL
LEFT JOIN (SELECT imvagg_tmp.ID_IMOVEL, est.ID_AGRUPGEO, est.nome FROM IMOVEL_AGRUPGEO imvagg_tmp
INNER JOIN AGRUPGEO est ON est.ID_AGRUPGEO = imvagg_tmp.ID_AGRUPGEO AND est.ID_TIPOGEOGRAFICO = ´E´
) imvest ON imv.ID_IMOVEL = imvest.ID_IMOVEL
LEFT JOIN (SELECT imvagg_tmp.ID_IMOVEL, est.ID_AGRUPGEO, est.nome FROM IMOVEL_AGRUPGEO imvagg_tmp
INNER JOIN AGRUPGEO est ON est.ID_AGRUPGEO = imvagg_tmp.ID_AGRUPGEO AND est.ID_TIPOGEOGRAFICO = ´P´
) imvpais ON imv.ID_IMOVEL = imvpais.ID_IMOVEL
Grato pela atenção!
select imv.ID_IMOVEL ´Index´, imvpais.nome ´Pais´, imvest.nome ´Estado´, imvloc.nome ´Localidade´, imvreg.nome ´Regional´, imvbro.nome ´Bairro´, tlgr.SIGLA ´Tp.´, lgr.NOMEOFICIAL ´Logradouro´, imv.nome ´Edf.´, imv.numero ´Num.´
FROM IMOVEL imv
INNER JOIN LOGRADOURO lgr ON imv.ID_LOGRADOURO = lgr.ID_LOGRADOURO
INNER JOIN TIPOLOGRADOURO tlgr ON lgr.ID_TIPOLOGRADOURO = tlgr.ID_TIPOLOGRADOURO
LEFT JOIN (SELECT imvagg_tmp.ID_IMOVEL, bro.ID_AGRUPGEO, bro.nome FROM IMOVEL_AGRUPGEO imvagg_tmp
INNER JOIN AGRUPGEO bro ON bro.ID_AGRUPGEO = imvagg_tmp.ID_AGRUPGEO AND bro.ID_TIPOGEOGRAFICO = ´B´
) imvbro ON imv.ID_IMOVEL = imvbro.ID_IMOVEL
LEFT JOIN (SELECT imvagg_tmp.ID_IMOVEL, est.ID_AGRUPGEO, est.nome FROM IMOVEL_AGRUPGEO imvagg_tmp
INNER JOIN AGRUPGEO est ON est.ID_AGRUPGEO = imvagg_tmp.ID_AGRUPGEO AND est.ID_TIPOGEOGRAFICO = ´R´
) imvreg ON imv.ID_IMOVEL = imvreg.ID_IMOVEL
LEFT JOIN (SELECT imvagg_tmp.ID_IMOVEL, est.ID_AGRUPGEO, est.nome FROM IMOVEL_AGRUPGEO imvagg_tmp
INNER JOIN AGRUPGEO est ON est.ID_AGRUPGEO = imvagg_tmp.ID_AGRUPGEO AND est.ID_TIPOGEOGRAFICO = ´L´
) imvloc ON imv.ID_IMOVEL = imvloc.ID_IMOVEL
LEFT JOIN (SELECT imvagg_tmp.ID_IMOVEL, est.ID_AGRUPGEO, est.nome FROM IMOVEL_AGRUPGEO imvagg_tmp
INNER JOIN AGRUPGEO est ON est.ID_AGRUPGEO = imvagg_tmp.ID_AGRUPGEO AND est.ID_TIPOGEOGRAFICO = ´E´
) imvest ON imv.ID_IMOVEL = imvest.ID_IMOVEL
LEFT JOIN (SELECT imvagg_tmp.ID_IMOVEL, est.ID_AGRUPGEO, est.nome FROM IMOVEL_AGRUPGEO imvagg_tmp
INNER JOIN AGRUPGEO est ON est.ID_AGRUPGEO = imvagg_tmp.ID_AGRUPGEO AND est.ID_TIPOGEOGRAFICO = ´P´
) imvpais ON imv.ID_IMOVEL = imvpais.ID_IMOVEL
Grato pela atenção!
Carlosdelfino
Curtir tópico
+ 0
Responder
Posts
20/10/2006
Rodolpho123
Este tipo de select só está disponível na versão 2.0
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)