Newsgroup: it.comp.lang.visual-basic
Titolo: doppia left join: si' in mysql no in access??

ciao a tutti
sto scrivendo un'applicazione che dovrebbe girare sia su mysql che su access
ho un problema con una query perche' sembra che access non supporti una
query dove ci sia una doppia left join, cioe' del tipo
select * from table1 left outer join table2 on CONDIZIONE(1-2) left outer
join table3 on CONDIZIONE(2-3) where CONDIZIONE GENERICA
quando invece mysql la supporta.
qualcuno ha qualche idea?
grazie
teo

teo ha scritto:

Purtroppo non c'e' verso. Se hai la possibilita' di usare MSDE (la versione
piccola di Sql Server), invece di Access, risolvi brillantemente il problema.
Se devi tenerti invece quella ciofeca di Access(*) devi spaccare la query in due.
Supponiamo di operare sul canonico Northwind.mdb e di voler lanciare
la seguente query (assurda nella fattispecie, ma serve come esempio):
SELECT     *
FROM         Products 
LEFT OUTER JOIN
                      [Order Details] ON Products.ProductID = [Order Details].ProductID 
LEFT OUTER JOIN
                      Orders ON [Order Details].OrderID = Orders.OrderID
WHERE 1=1
Occorre creare una prima query che chiameremo, ad esempio, qryLeftOuterOrders:
SELECT *
FROM Orders
LEFT OUTER JOIN [Order Details] 
	ON [Order Details].OrderID = Orders.OrderID
Parentesi: quei ca%%0n1 della M$ danno il cattivo esempio mettendo
gli spazi nei nomi di tabella e camp. Mah!
Chiusa parentesi.
Adesso puoi scrivere la seguente select:
SELECT *
FROM Products
LEFT OUTER JOIN qryLeftOuterOrders
	ON Products.ProductID =  qryLeftOuterOrders.ProductID
WHERE 1=1
Se la esegui ti produce 2155 righe, cosi' come la versione "seria" su sql server.
Non ho verificato se l' output era effettivamente corretto perche'
la query e', nel caso del mio esempio, logicamente insensata e serve
solo come esempio.
-- 
hth, hal
(*) giusto oggi il DAO 3.51 mi ha negato una select contenente una sottoselect :-(

 (*) giusto oggi il DAO 3.51 mi ha negato una select contenente una
sottoselect :-(
OK, sapete che vi dico?
1) Non ho bevuto (non ancora, almeno)
2) Non sono un sensitivo (non mi ci spaccio, cioè)
3) Dico spesso sciocchezze (non sempre, comunque)
Detto questo, vi confido una sensazione:
Sono due/tre mesi che accadono cose strane! Errori non riproducibili e
incomprensibili, archivi non riconosciuti e poi perfettamente gestiti,
strano comportamenti sistematici di una postazione identica a  tutte le
altre con comportamenti assolutamente normali, etc., etc.
'sta volta non mi lancio nella solita filippica anti-M$, ma sono davvero
"stranito":
Da qualche giorno ho il mio nuovo XP pro (contento, sinora) e ho potuto
apprezzare e nel contempo innervosirmi per l'auto-aggiornamento quando sei
in linea. Ora, ben sapendo di non essere affatto originale, mi viene in
mente, anzi, mi sembra realistico, oltre che tecnicamente possibile, la
possibilità che qualche legge di mercato (magari con tanto di nome e
cognome) possa, con cadenza apparentemente casuale, ma stranamente
coincidente con altre e lontane testimonianze, intervenire sul sistema non
tanto per "rubare" info (vecchia e digerita realtà), quanto per minarne la
stabilità, il "così com'è", la pur riconosciuta "vecchiezza", ma tanto
mantenuta quanto apprezzata per esperienza, affidabilità e provata solidità,
al solo (solo?) scopo di alterare un bit qui e là con la casualità più
distribuita per garantire una diffusa e inconfrontabile debolezza di quanto,
sino a ieri appariva graniticamente immutabile e fedele.
Perchè?
Forse per costringerci (noi, voi, loro, quasi tutti ormai) a dire, essendone
assolutamente convinti, il fatidico e beatamente e inconsciamente assimilato
... "beh, è ora di cambiare".
Sto vaneggiando? Può darsi, ma vi confesso che 'sta cosa mi accompagna da
qualche settimana.

qualche settimana.
Beato te, io ne sono convinto da ben piu' tempo :-(
-- 
ciao, hal
che, comunque, per noi va bene perche' e' tutto lavoro :-)
(almeno spero)

 Purtroppo non c'e' verso.
A volte cosa mi chiedo come diavolo facciano a inventarsele....ma ci vuole
tanto a uniformare la sintassi di due database della stessa ditta!Ma cosa
hanno in testa quelli?
Se puo' servire ho scoperto che la doppia left join e' supportata anche da
Access solamente che bisogna mettere la prima left FRA PARENTESI...
ciao
teo

Access solamente che bisogna mettere la prima left FRA PARENTESI...
uhmm, come e con quale versione di Access?
-- 
ciao, hal


SELECT * FROM (T1 LEFT JOIN T2 ON T1.Campo = T2.Campo) LEFT JOIN T3 ON
T2.Campo = T3.Campo WHERE CondizioneCheTiPare
Ciao
Stefano

 wrote in message
news:abrs81$g4g$1...@newsreader.mailgate.org...

il come lo puoi leggere nel post di nemo1970
il dove..io lo sto usando con Access 2000 (9.0.3821)
ciao

il dove..io lo sto usando con Access 2000 (9.0.3821)
Thanks, dovrebbe andare anche con 97 ;-)
-- 
ciao, hal

Ahecco, non gli piace OUTER!
Per la precisione, questa volta il RTFM me lo sono meritato io :-(
<citazione dalla documentazione di Office 97>
Remarks   
Use a LEFT JOIN operation to create a left outer join. 
Left outer joins include all of the records from the first (left) of two tables, 
even if there are no matching values for records in the second (right) table.
Use a RIGHT JOIN operation to create a right outer join. 
Right outer joins include all of the records from the second (right) of two tables, 
even if there are no matching values for records in the first (left) table.
</citazione>
E' detto a chiare lettere che non vuole LEFT OUTER JOIN.
Grazie ancora a teo e nemo1970 per avermelo fatto notare.
-- 
ciao, hal