galantik ha scritto:
...Da questa unione è generata la tabella UnionT che dovrebbe confrontarsi tramite LEFT JOIN (quindi unendo solo i campi nuovi e non quelli già presenti) alla tabella tabC e salvare questa tabC con i soli record nuovi....
LEFT JOIN include tutti record della prima tabella (quella di sinistra) anche se non vi sono valori corrispondenti ai record della seconda tabella (quella di destra). Quindi il risultato di
UnionT LEFT JOIN tabC ON UnionT.id = tabC.Id
sarà "tutti i record di UnionT" (non solo quelli che non trovano corrispondenza in tabC). Di conseguenza tutti gli ID di UnionT saranno inseriti in TabC a seguito di
INSERT INTO tabC ( id )
SELECT UnionT.id AS id FROM...
(a meno che non ci siano violazioni di chiave primaria o indice duplicati non ammessi su TabC.ID)
A che serve il GROUP BY UnionT.id? In generale tutta la query ha "poco senso", forse perché semplificata eccessivamente a titolo di esempio?
galantik ha scritto:
......Da questa unione è generata la tabella UnionT...
Occhio che UnionT è una "tabella derivata" non una "tabella in senso stretto"
PS: dopo i nomi dei campi con gli spazi, ora il nome delle tabelle con la chiocciola.