como fazer um inner join com subselect
Olá!
Meu nome é Carlos Delfino, sou programador java e estou iniciando a trabalhar em um projeto de migração de dados para o Firebird, o seguinte select funciona muito bem no MySQL mas infelizmente não funciona no Firebird alguem poderia me dar uma dica?
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
Meu nome é Carlos Delfino, sou programador java e estou iniciando a trabalhar em um projeto de migração de dados para o Firebird, o seguinte select funciona muito bem no MySQL mas infelizmente não funciona no Firebird alguem poderia me dar uma dica?
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
Carlosdelfino
Curtidas 0