implementare una full join

ho appena scoperto che in mysql il full join non implementato...non c' un modo alternativo per ottenere lo stesso risultato?

cio io ho 2 tabelle dalle quali devo prendere tutte le righe sia di una che dell'altra anche dove non ci sono corrispondenze...come posso fare?

inviato 9 anni fa
Mandalayawantico
X 0 X

ti serve fare il prodotto cartesiano delle due tabelle?

in questo caso in MySQL si usa il CROSS JOIN

:bye:

risposto 9 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

no il prodotto cartesiano sarebbe eccessivo

mi serve prendere tutte le righe della prima tabella + tutte le righe della seconda e quelle che hanno uguali valori metterle insieme...in pratica un unione

risposto 9 anni fa
Mandalayawantico
X 0 X

Una FULL JOIN pu essere simulata facedo una UNION tra una LEFT JOIN e una RIGHT JOIN

trovi maggiori dettagli e altre tecniche alternative qui:

http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/

:bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

ottimo grazie

risposto 9 anni fa
Mandalayawantico
X 0 X

un'altra cosa...ho provato ad usare il primo metodo della union tra il left e il right outer join solo che quando eseguo l'intera query che mi serve per creare una vista il computer carica per parecchi minuti la pagina di phpmyadmin diventa bianca ed alla fine mi riappare la struttura del database con le scritte diverse (con un font diverso) allora io vado a cancellare la vista che ho appena creato e torna tutto normale

pu essere un problema di time out? e in caso cosa dovrei modificare? o forse la query ad essere troppo complessa? la query la seguente:

create view giacenzavendita (codiceABarre, cod_filiale, quantita, quantita_in_arrivo, data_ultima_vendita, data_ultimo_acquisto, prezzo_di_vendita, prezzo_acquisto, quantita_magazzino) as
select v.codiceABarre, v.cod_filiale, v.quantita, g.quantita_in_arrivo, g.data_ultima_vendita, g.data_ultimo_acquisto, g.prezzo_di_vendita, g.prezzo_acquisto, g.quantita_magazzino

from venditaripulita v
  left outer join giacenza g on v.cod_filiale = g.cod_filiale AND v.codiceABarre = g.codiceABarre

union

select g.codiceABarre, g.cod_filiale, v.quantita, g.quantita_in_arrivo, g.data_ultima_vendita, g.data_ultimo_acquisto, g.prezzo_di_vendita, g.prezzo_acquisto, g.quantita_magazzino

from venditaripulita v
  right outer join giacenza g on v.cod_filiale = g.cod_filiale AND v.codiceABarre = g.codiceABarre

in tutte le tabelle ho creato gli indici per le varie join tranne nella tabella venditaripulita che una vista e non credo si possa fare

risposto 9 anni fa
Mandalayawantico
X 0 X

se puoi, lancia la query direttamente dal cliet di MySQL da riga di comando

:bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda