[SQL] - Differenza tra tabelle

iLLiDaN

Utente Èlite
2,676
1
Ciao ragazzi,
mi serve una mano per costruire una query SQL in Access.
Ho due tabelle importate da Excel e ho bisogno di costruire una query che, dati 2 valori in ingresso, mi deve dare una tabella con tutti i campi che differiscono.
La soluzione che mi era venuta in mente era quella di creare una prima query che mi da come risultato tutti i campi richiesti dalla prima tabella, creare una seconda query che mi da come risultato tutti i campi richiesti dalla seconda tabella e unirle insieme in una terza tabella.
Poi su questa terza tabella effettuare la differenza.

Non so se è una cosa fattibile/sensata, voi come la vedete?
Se è fattibile come la realizzereste?

Grazie
 

Kappa27

Utente Attivo
303
24
La cosa è fattibile, appena accendo il pc del lavoro ti passo lo script che uso con tanto di commenti per personalizzarlo ;)
 

iLLiDaN

Utente Èlite
2,676
1
Grazie Kappa27, giusto per fare un po' di chiarezza sulla mia richiesta dato che altre persone hanno avuto difficoltà a capire cosa sto cercando, cerco di spiegare comunque un po' meglio.

In Access non posso usare l'operazione MINUS che sarebbe perfetta per questa cosa e in molti danno come alternativa alla MINUS la LEFT JOIN.
Il problema è che La LEFT JOIN va bene per quello che sto cercando fino a un certo punto.
Praticamente la LEFT JOIN va a prendere tutti i record della prima tabella ed estrae tutti i record della seconda tabella che trovano una corrispondenza nella prima. Per quelli che non hanno corrispondenza la LEFT JOIN mi mostrerà NULL.

A me serve come risultato una tabella che mi mostri soltanto i record che differiscono tra le due, quindi non tutti i record della prima tabella con quelli della seconda che hanno trovato corrispondenza o NULL ma soltanto quelli che danno NULL in quanto sono quelli che differiscono dalla prima.

Non so se mi sono spiegato...so di per certo che con altri DB la MINUS fa già in automatico questa cosa.

La query che ho al momento è la seguente:

SELECT (vari nomi dei campi)
FROM Tabella1 LEFT JOIN Tabella2
ON Tabella1.CODE = Tabella2.CODE
WHERE Tabella1.oldcode=[Inserisci oldcode:] AND Tabella2.newcode=[Inserisci il newcode:]

Dopo aver dato i due valori di input, che quindi fanno da filtro per tutti i valori nelle tabelle, ottengo una tabella abbastanza grossa (più di mille record) mentre invece come risultato dovrei ottenere una tabella con 4 record.

Preciso che non è un vero e proprio database quello su cui sto lavorando, ma sono due grossi file Excel importati con la funzione di Access per caricare dati esterni.
Come già detto, dati due valori di input inseriti dall'utente ('oldcode' e 'newcode'), la query mi deve restituire le differenze che caratterizzano questi due codici.
 

Kappa27

Utente Attivo
303
24
Dopo che ho letto il tuo ultimo messaggio posso proporti una soluzione: dato che conosci l'SQL e mi sembri preparato posso consigliarti di scaricare SQL Server Management Studio e SQL Server. Ciò non è altro che la coppia di programmi che ti permette di gestire i database MS (tra cui anche i db in access). Puoi liberamente scaricare la versione Express (Gratuita) di questi programmi direttamente dal sito MS. Dopo l'installazione puoi creare un database di transizione per importare i tuoi files di Excel in tabelle separate e successivamente potrai maneggiare i tuoi dati con la sintassi SQL ;)
Spero di non aver frainteso e rimango a disposizione per eventuali dubbi.
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili