Newsgroup: it.comp.appl.access
Titolo: Aiuto !!! Grossi problemi creazione query tra tabelle relazionate :-(

Ciao a Tutti,
ho l'esigenza di creare una query da poter poi successivamente riutilizzare
sotto ASP.
La mia situazione è questa:
    nel db che devo elaborare ho una tabella (che chiamerò X) relazionata
con altre 5 tabelle (che chiamerò A,B,C,D e E). Le tabelle A,B,C,D e E sono
composte da 2 campi "Codice_yyy" e "Descrizione_yyyy" e così via, ogni campo
"Codice_yyy"  delle tabelle A,B,C,D e E è relazionato (uno a molti) con più
campi della tabella X.
Io ho l'esigenza di creare una query che mi permetta di visualizzare
(operando un filtraggio sull'id della tabella X) tutti i campi della tabella
X esclusi i campi collegati (relazionati) in cui devo visualizzare i valori
del campo "Descrizione_" delle rispettive tabelle A,B,C,D e E collegate.
Ho provato a creare le query da access sfruttando le proprietà di JOIN, ma
niente da fare acces non sembra supportare queste query restituendomi un
errore.
Spero di essere stato abbastanza chiaro e soprattutto spero che qualcuno di
Voi mi riesca ad aiutare.
Ciao a Tutti e Grazie mille per il tempo che mi avete dedicato.
Ciao Ciao .:: P ::.

 ha scritto nel messaggio

Non mi sembra che tu sia stato molto chiaro.
La query la scrivi a manina?
prova a postare il codice sql.
sib

 errore.
quale errore?
select x.c1,x.c2,x.c3,a.d4,b.d5,c.d6,d.d7,e.d8
from x, a, b, c, d, e
where x.c4 = a.c4 and x.c5 = b.c5 and x.c6 = c.c6 and x.c7 = d.c7 and x.c8 =
e.c8
non va'?
P.S. "Aiuto!!!"  nel subject e' superfluo
--
a.cara 
Togli qualcosa dall'email

"Sib" <si...@SPAMiol.it> wrote in message
news:orMVa.30966$Df5.9...@news1.tin.it...

La query l'ho anche provata a modificare e farla a mano ma non sono riuscito
a venirne a  capo, comunque quella che vedi sotto riportata è frutto dello
strumento di access per la creazione delle query.
SELECT rumore.*
FROM tipi_ris LEFT JOIN (tipi_pro LEFT JOIN (tipi_pri LEFT JOIN (tipi_gra
LEFT JOIN (tipi_ana LEFT JOIN rumore ON tipi_ana.cod_tipo = rumore.A) ON
tipi_gra.cod_grav = rumore.A_grav) ON tipi_pri.cod_prior = rumore.A_prior)
ON tipi_pro.cod_prob = rumore.A_prob) ON tipi_risch.cod_risch =
rumore.A_risch
WHERE (((
rumore.id
)='X'));
L'errore che access mi restituisce nel momento in cui provo a visualizzare i
dati che mi dovrebbero essere restituiti dalla query:
"The SQL statement could not be executed because it contains ambiguous outer
joins. ecc".
Spero che a te ti venga in mente qualcosa.
Ciao .:: P ::.

 "Sib" <si...@SPAMiol.it> wrote in message

Il messaggio mi pare cristallino.
Forse non te ne sei accorto, ma hai sbagliato la "direzione" di tutti i
join.
come pretendi che access ti mostri tutti i record di ciascuna delle tabelle
tipi_?
inverti i "versi" delle freccette e vedrai che funziona.
Cosa speravi di ottenere?
Sib

"Sib" <si...@SPAMiol.it> wrote in message
news:nJRVa.234$cl3....@news2.tin.it...

Sib hai perfettamente ragione comunque la query che ti ho inviato
apparteneva ad un'ultima prova che avevo fatto in preda alla disperazione,
poiché inizialmente a rigor di logica avevo composto la query con il RIGHT
ma niente da fare. Con RIGHT su access la visualizzazione della query è
esatta ma se la utilizzo con ASP il discorso è diverso poiché sul recordset
mi vengono caricati i valori della tabella rumore e non i valori dei campi
descrizione delle tabelle tipi_ .
Molto probabilmente sbagliavo qualcosa nella sintassi del SELECT, mi
sapresti dare dei suggerimenti a proposito ???
Mi spiego meglio, in altre tabelle ho una situazione più complessa nel senso
ogni tabella tipi_ è collegata a più campi della tabella principate (in
questo esempio la tabella era rumore) e ho l'esigenza di visualizzare tutti
i campi della tabella principale esclusi i campi collegati alle tabelle
tipi_ in cui devo visualizzare il valore del campo descrizione della
rispettiva tabella tipi_ collegata (es. tipi_pri.des_prior).
Mi sapresti dare una mano ????
Ciao Patrizio.

 descrizione delle tabelle tipi_ .
Ovviamente, infatti dopo l'istruzione SELECT hai messo:
rumore.*
ossia hai detto al motore database di caricare tutti e solo i campi della
tabella rumore.
devi aggiungere:
rumore.*, tipi_ris.*, tipi_pro.*, ecc ecc
cut
Per il resto prova a partire dal suggerimento che ti ho dato.
Sib


Sib per quanto rigurda l'esempio sopra riportato ora č tutto ok, in basso ti
riporto la query che mi funziona:
SELECT tipi_ana.descr, tipi_pro.descr, tipi_gra.descr, tipi_ris.descr,
tipi_pri.descr, rumore.note, rumore.misuraz, rumore.note_g, rumore.u,
rumore.t, 
rumore.id
FROM tipi_ris RIGHT JOIN (tipi_pro RIGHT JOIN (tipi_pri RIGHT JOIN (tipi_gra
RIGHT JOIN (tipi_ana RIGHT JOIN rumore ON tipi_ana.cod = rumore.d) ON
tipi_gra.cod = rumore.d_g) ON tipi_pri.cod = rumore.d_p) ON tipi_pro.cod =
rumore.d_p) ON tipi_ris.cod = rumore.d_r;
Ora ho un problema uguale nella creazione di una query in cui perň la
tabella principale (tipo "rumore" nel precedente caso ) ha piů campi
collegati ad ogni singola tabella tipi_ .
Per ora ho buttato giů la query che vi riporto in basso ma nonostante il
tempo impiegato a ragionarci su questo č il meglio che sono riuscito a fare,
con il problema che per ogni ID mi vengono restituiti 2 record nonostante
abbia lavorato sui AND e OR.
Sotto vi riporto la mia query:
SELECT 
s_fisse.id
, tipi_ana.descr, tipi_pro.descr, tipi_gra.descr,
tipi_ris.descr, tipi_pri.descr, s_fisse.art_n, tipi_ana.descr,
tipi_pro.descr, tipi_gra.des, tipi_ris.des, tipi_pri.des, s_fisse.alz_n
FROM tipi_ris RIGHT JOIN (tipi_pro RIGHT JOIN (tipi_pri RIGHT JOIN (tipi_gra
RIGHT JOIN (tipi_ana RIGHT JOIN s_fisse ON (tipi_ana.cod = s_fisse.ram) OR
(tipi_ana.cod = s_fisse.par2) OR (tipi_ana.cod = s_fisse.par) OR
(tipi_ana.cod = s_fisse.alz) OR (tipi_ana.cod = s_fisse.art)) ON
(tipi_gra.cod = s_fisse.ram_g) OR (tipi_gra.cod = s_fisse.par2_g) OR
(tipi_gra.cod = s_fisse.par_g) OR (tipi_gra.cod = s_fisse.alz_g) OR
(tipi_gra.cod = s_fisse.art_g)) ON (tipi_pri.cod = s_fisse.ram_p) OR
(tipi_pri.cod = s_fisse.par2_p) OR (tipi_pri.cod = s_fisse.par_p) OR
(tipi_pri.cod = s_fisse.alz_p) OR (tipi_pri.cod = s_fisse.art_p)) ON
(tipi_pro.cod = s_fisse.ram_p) OR (tipi_pro.cod= s_fisse.par2_p) OR
(tipi_pro.cod = s_fisse.par_p) OR (tipi_pro.cod = s_fisse.alz_p) OR
(tipi_p.cod = s_fisse.arte_p)) ON (tipi_ris.cod = s_fisse.ram_r) OR
(tipi_ris.cod = s_fisse.par2_r) OR (tipi_ris.cod = s_fisse.par_r) OR
(tipi_ris.cod = s_fisse.alz_r) OR (tipi_risch.cod = s_fisse.art_r);
Scusate se vi tartasso ma purtroppo la mia non approfondita conoscenza di
sql mi porta a questo.
Ciao .:: P ::.