Newsgroup: it.comp.software.database
Titolo: LEFT JOIN

Sapreste tradurmi una LEFT JOIN senza l'uso di tale costrutto, cioè
usando solo FROM e WHERE?
Mhaxx


Penso che non sia fattibile.
K.

 usando solo FROM e WHERE?
Una Left join e' un Outer Join, pertanto non si puo' fare se non con
una Outer Join. Potresti "simularla" facendo una join, una select
e poi una Union delle due, ma se il db supporta le union probabilmente
supporta anche le Outer Join.
Davide

 Mhaxx
Ciao...
-- 
Luca Bianchi
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
http://italy.mvps.org

>Penso che non sia fattibile.
Scherzi???
Porc.. ma non č possibile, io le ho usate le LEFT JOIN, sono
indispensabili, e adesso scopro che sul server usano MySQL 3.23.. che
a quanto pare non le supporta! :-(((
Dove posso trovare la sintassi delle JOIN di quella versione? (non
riesco a trovarla per ora..)
Mhaxx


La soluzione c'è anche se non è molto (per usare un eufemismo) 
elegante.
Come ti è già stato postato non è possibile effettuare delle 
left/right join con FROM WHERE ma solo delle inner join.
siccome l'inner join ti restitusce tutti i record in cui c'è 
corrispondenza tra le tabelle collegate,
per essere chiari se hai un record in T1 ma non nella collegata T2, 
questo record non ti viene mostrato.
Puoi crearti nella (o nelle) tabella collegata un record vuoto con id 0 
(oppure con id altissimo tipo 999999999999) o che comunque sei 
certo non userai mai e collegarlo alla tabella T1 quando questa non 
ha record associati.
Spero di essere riuscito a spiegarmi.
ciao
Stefano
Inviato da 
www.mynewsgate.net

 ======================
Questo non e' SQL standard, credo che valga solo per Informix o
Oracle.
Gaetano

Oracle.
e Microsoft SQL Server, almeno la 6.5 
Stefano "HappyMan" (Lago Maggiore - NO)
--
Personal Web 
http://www.sgr.info
Email happyman69 (at) 
libero.it

 e Microsoft SQL Server, almeno la 6.5
...esatto. La sintassi è supportata ancora nella versione 7.0 e 2000 ma è
esplicitamente sconsigliato usarla...


 Mhaxx


ha record associati.
Arghhhh, che schifezza!
Perdonami, ma non sono abituato a programmare cosě dis-elegantemente!
:-)
Ti ringrazio.. ho cmq capito che senza LEFT JOIN non vado da nessuna
parte..
Mhaxx

 è equivalente a


 i comandi SQL.
...certo, come tutte le "vecchie sintassi" che prevedono la condizione di
join "nascosta" nella condizione di ricerca...


 a quanto pare non le supporta! :-(((
???
lavoro su MySQL 3.23.53...
e la LEFT JOIN, mi funziona!
...che tipo di errore ti riporta il server dopo la tua query?
Simone

...che tipo di errore ti riporta il server dopo la tua query?
Scherzi?
Mi dà un errore di sintassi.. 
Potresti provare a far funzionare una query come la mia da te? (cambia
nomi e quello che vuoi ma lascia la struttura, gli AS, la LEFT..)
Mhaxx

 ha scritto nel messaggio
news:45qqovgsa5n6djb9i...@4ax.com...

ti ho gia' risposto su 'Incredibile MySQL'...
nelle versioni di MySql 3.23.*  con JOIN non puoi usare le clausole
ON/USING...
(prova a toglierla dalla tua query..),
altrimenti usa INNER JOIN  dove sono invece obbligatorie le clausole
ON/USING.
Simone

....
ma quale'è la querry con la left join non funzionante?
ti ho appena postato facendo riferimento ad 'Incredibile MySQL',
ma li non c'era una LEFT JOIN...(ho fatto confusione?)
cmq nella LEFT JOIN  le clausole sono obbligatorie!
Simone

ON/USING.
Usando INNER funziona cmq, solo la condizione JOIN la specifico in una
WHERE..
Mhaxx

cmq nella LEFT JOIN  le clausole sono obbligatorie!
Come può essere?! Se hai detto che non si possono mettere le clausole
nel 3.23, sono obbligatorie!??
A scaso di equivoci: tu la query lì sopra come la scriveresti?
Tieni presente che mi dà un errore di sintassi, se vuoi ti dico anche
cosa di preciso, ma mi in una riga del FROM, forse l'ultima..
Mhaxx

 cosa di preciso, ma mi in una riga del FROM, forse l'ultima..
potrebbe essere utile se il mio suggerimento non funziona!...e se
l'errore non risiede nelle clausole che hai inserito!
 Simone

l'errore non risiede nelle clausole che hai inserito!
Grazie infinite, ciao,
Mhaxx

 a quanto pare non le supporta! :-(((
MySQL supporta la LEFT JOIN fin dalla versione 2.
Sintassi:
FROM tabella1 t1 LEFT JOIN tabella2 t2 ON (t1.chiave=t2.chiave)
ALternativa, quando il campo chiave ha lo stesso nome su entrambe le tabelle
FROM tabella1 t1 LEFT JOIN tabella2 t2 USING(chiave)
