Newsgroup: it.comp.software.database
Titolo: select impegnativa in oracle

Ciao, ho una select un po complessa da fare, prima di mettermi a gestire la
cosa in altro modo provo a chiedere.
ho 4 tabelle(A, B, C, D) con la stessa chiave(cda_cesp, prg_comp, num_eser)
Io devo prendere praticamente tutti i dati da ogni tabella, ma non ce n'č
una predominante da cui partire in cui so per certo che ci sono tutti i
record, un certo record puň essere in una tabella o in un altra o in tutte.
Alla fine devo prendere in un unica riga i dati da ogni tabella per stessa
chiave e se quelli di una o piů tabelle non li ho trovati saranno vuoti.
non so se č chiaro, se lo fosse, qualcuno sa aiutarmi?
grazie, ciao.

 non so se è chiaro, se lo fosse, qualcuno sa aiutarmi?
Allora, il problema e' che tu vuoi fare una Outer Join multipla, che
non e' possibile (Oracle si incasina parecchio). Percui o te lo gestisci
da codice, oppure la vedo grigia.
Davide

 grazie, ciao.
prova a vedere sul manuale di Oracle le operazioni su
insiemi di record set...
in particolare union
/G

...
Outer join, ma va fatta a pezzi... meglio se ti fai delle viste:
tab 1 e 2:
create view t12 as 
select * from t1,t2 where t1.chiave=t2.chiave(+)
UNION
select * from t1,t2 where t1.chiave(+)=t2.chiave
1,2 e 3:
stessa cosa ma prendendo la vista gia' creata:
create view t123 as 
select * from t12,t3 where t12.chiave=t3.chiave(+)
UNION
select * from t12,t3 where t12.chiave(+)=t3.chiave
UNION e non UNION ALL perche' devi rimuovere eventuali duplicati.
Inutile dire che la vista e' pesantissima
Sarebbe meglio farsi un'unica tabella e magari crearsi delle viste che
riproducono l'attuale situazione (questa modifica dovrebbe essere
trasparente, avresti qualche problema con le insert che in qualche
caso dovrebbero diventare delle update e sulle delete che potrebbero
diventare update, ti serviranno dei trigger instead of sulle viste)
Greetings,
Alessandro Trebbi
Pesaro, Italy
http://www.b3soft.com


 wrote in message
news:cf9e644b.0212...@posting.google.com...


[CUT]
per curiosità ci fai vedere la select ???
Grazie
--
Simone
Honda S2000 driver Blu/black 240cv
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (
http://www.grisoft.com
).
Version: 6.0.419 / Virus Database: 235 - Release Date: 13/11/2002

 Simone
La select è la seguente, siccome nessuna delle 4 tabelle ha tutti i record e
un record può essere solo in una tabella piuttosto che in un altra oppure in
tutte, diciamo che non c'è una tabella predominante da cui partire, nella
from mi sono creato praticamente una vista che preleva tutte le chiavi
presenti senza duplicati, poi metto in outerjoin questa vista con le varie
tabelle.
Se avete bisogno di informazioni chiedete pure.
ciao.
SELECT CHIAVI.CDA_CESP,CHIAVI.PRG_COMPO,CHIAVI.NUM_ESER,F.VAL_AMRT,
F.VAL_SPE_DED_FISC, F.VAL_FON_AMRT, F.VAL_ANTI_FISC, F.VAL_ACCEL,
   F.VAL_NON_AMRT, F.VAL_RESID, F.VAL_RIVAL, F.VAL_RIVAL_FON, F.QTA_SCHD,
F.VAL_ALIEN, F.VAL_PLUSV, F.VAL_MINU,
   F.DAT_CREAZ, F.DES_UTE_CREAZ, F.DAT_MOD, F.DES_UTE_MOD,D.VAL_AMRT,
D.VAL_AMRT_FR, D.VAL_SPE_DED_FISC, D.VAL_SPE_DED_FISC_FR, D.VAL_FON_AMRT,
D.VAL_FON_AMRT_FR,
   D.VAL_ANTI_FISC, D.VAL_ANTI_FISC_FR, D.VAL_ACCEL, D.VAL_ACCEL_FR,
D.VAL_NON_AMRT, D.VAL_NON_AMRT_FR, D.VAL_RESID,
   D.VAL_RESID_FR, D.VAL_ALIEN, D.VAL_ALIEN_FR, D.VAL_PLUSV, D.VAL_PLUSV_FR,
D.VAL_MINU, D.VAL_MINU_FR, D.DAT_CREAZ,
   D.DES_UTE_CREAZ, D.DAT_MOD, D.DES_UTE_MOD,
   C.VAL_AMRT, C.VAL_FON_AMRT, C.VAL_FON_SVA_CIV, C.VAL_RESID, C.VAL_RIVAL,
C.VAL_RIVAL_FON, C.QTA_SCHD, C.VAL_ALIEN,
   C.VAL_PLUSV, C.VAL_MINU, C.DAT_CREAZ, C.DES_UTE_CREAZ, C.DAT_MOD,
C.DES_UTE_MOD,
   G.VAL_AMRT, G.VAL_FON_AMRT, G.VAL_FON_SVA_GEST, G.VAL_RESID, G.VAL_RIVAL,
G.VAL_RIVAL_FON, G.QTA_SCHD, G.VAL_ALIEN,
   G.VAL_PLUSV, G.VAL_MINU, G.DAT_CREAZ, G.DES_UTE_CREAZ, G.DAT_MOD,
G.DES_UTE_MOD
FROM
  (SELECT CDA_CESP,PRG_COMPO,NUM_ESER
  FROM AMXX_SCHFIS
  UNION
  SELECT CDA_CESP,PRG_COMPO,NUM_ESER
  FROM AMXX_SCHDED
  UNION
  SELECT CDA_CESP,PRG_COMPO,NUM_ESER
  FROM AMXX_SCHCIV
  UNION
  SELECT CDA_CESP,PRG_COMPO,NUM_ESER
  FROM AMXX_SCHGES) CHIAVI,
AMXX_SCHFIS F,
AMXX_SCHDED D,
AMXX_SCHCIV C,
AMXX_SCHGES G
WHERE
CHIAVI.CDA_CESP = F.CDA_CESP(+)
AND CHIAVI.PRG_COMPO = F.PRG_COMPO(+)
AND CHIAVI.NUM_ESER = F.NUM_ESER(+)
AND CHIAVI.CDA_CESP = D.CDA_CESP(+)
AND CHIAVI.PRG_COMPO = D.PRG_COMPO(+)
AND CHIAVI.NUM_ESER = D.NUM_ESER(+)
AND CHIAVI.CDA_CESP = C.CDA_CESP(+)
AND CHIAVI.PRG_COMPO = C.PRG_COMPO(+)
AND CHIAVI.NUM_ESER = C.NUM_ESER(+)
AND CHIAVI.CDA_CESP = G.CDA_CESP(+)
AND CHIAVI.PRG_COMPO = G.PRG_COMPO(+)
AND CHIAVI.NUM_ESER = G.NUM_ESER(+);