in my exercise for Oracle/Sql, i have 2 table D_REL_ENTI_FABBRICATI and D_ENTI:
D_REL_ENTI_FABBRICATI has 2 FK: FK_ENTI and FK_ENTE_PROPRIETARIO and 2 field that i want get: Denominazione and Codice_Fiscale. D_ENTI has unique Primary Key: SEQU_ENTE.
Now i want select all record of D_REL_ENTI_FABBRICATI with 4 fields:
Amm_Dich_Denom: get Denominazione when D_REL_ENTI_FABBRICATI.FK_ENTI=D_ENTI.SEQU_ENTE;
Amm_Dich_CF: get Codice_Fiscale when D_REL_ENTI_FABBRICATI.FK_ENTI=D_ENTI.SEQU_ENTE;
Ente_Prop_Denom: get Denominazione when D_REL_ENTI_FABBRICATI.FK_ENTE_PROPRIETARIO=D_ENTI.SEQU_ENTE;
Ente_Prop_CF: get Codice_Fiscale when D_REL_ENTI_FABBRICATI.FK_ENTE_PROPRIETARIO=D_ENTI.SEQU_ENTE;
my solution is this:
select
D.FK_ENTE,
D.FK_ENTE_PROPRIETARIO,
(select D_ENTI.DESC_DENOMINAZIONE from D_ENTI where D.FK_ENTE=D_ENTI.SEQU_ENTE) AMM_DICH_DENOM,
(select D_ENTI.CODI_CODICE_FISCALE from D_ENTI where D.FK_ENTE=D_ENTI.SEQU_ENTE) AMM_DICH_CF,
(select D_ENTI.DESC_DENOMINAZIONE from D_ENTI where D.FK_ENTE_PROPRIETARIO=D_ENTI.SEQU_ENTE) ENTE_PROPR_DENOM,
(select D_ENTI.CODI_CODICE_FISCALE from D_ENTI where D.FK_ENTE_PROPRIETARIO=D_ENTI.SEQU_ENTE) ENTE_PROPR_CF
from
D_REL_ENTI_FABBRICATI D
But there is another method more elegant and afficent?
Thanks all Regards
Is this what you're looking for ?
SELECT
d.fk_ente,
d.fk_ente_proprietario,
de.desc_denominazione amm_dich_denom,
de.codi_codice_fiscale amm_dich_cf,
dep.desc_denominazione ente_propr_denom,
dep.codi_codice_fiscale ente_propr_cf
FROM
d_rel_enti_fabbricati d
LEFT OUTER JOIN d_enti de ON d.fk_ente = de.sequ_ente
LEFT OUTER JOIN d_enti dep ON d.fk_ente_proprietario = dep.sequ_ente
If you always have values in d.fk_ente and d.fk_ente_proprietario you can replace the LEFT OUTER JOIN
with JOIN
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments