Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla
DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla
DJI ha appena ufficializzato la serie Lito, la sua nuova gamma di droni entry-level destinata a chi si avvicina per la prima volta alla fotografia aerea. Al centro dell'annuncio ci sono due modelli ben distinti per fascia di prezzo e specifiche tecniche: DJI Lito 1 e DJI Lito X1. Entrambi si collocano sotto la soglia regolamentare dei 249 grammi, che permette di volare con requisiti burocratici più semplici rispetto ai droni più pesanti.
Sony World Photography Awards 2026: i premiati, anche italiani, il punto sulla fotografia di oggi
Sony World Photography Awards 2026: i premiati, anche italiani, il punto sulla fotografia di oggi
Siamo stati a Londra per la premiazione dei Sony World Photography Awards 2026, l'evento a tema fotografia più prestigioso. Fra sorprese e novità, ne approfittiamo per fare il punto sulla fotografia contemporanea, in cui la didascalia è sempre più necessaria a cogliere il senso della quasi totalità degli scatti.
Una settimana con Hyundai Ioniq 5 N-Line: diverte e convince
Una settimana con Hyundai Ioniq 5 N-Line: diverte e convince
L'elettrica di casa Hyundai propone una versione AWD con estetica derivata dalla famiglia N. L'abbiamo provata per diversi giorni, per scoprire tutti i dettagli e la vera autonomia in autostrada
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-01-2012, 14:54   #1
SaW
Member
 
Iscritto dal: Jun 2005
Messaggi: 286
[SQL] - Differenza tra tabelle

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
SaW è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2012, 16:20   #2
daxdaxdax
Member
 
L'Avatar di daxdaxdax
 
Iscritto dal: Aug 2009
Messaggi: 168
Si, non ho capito molto da cosa devono essere diversi i record ma immagino che non ci debbano essere "doppioni". Se così fosse si potrebbe unire le tabelle e fare una select distinct..
__________________
D@x
daxdaxdax è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2012, 16:35   #3
demos88
Senior Member
 
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
Quote:
Originariamente inviato da SaW Guarda i messaggi
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
Ma i campi devono differire da cosa?
E le due tabelle sono joinabili (hanno un attributo dello stesso tipo che ha senso usare come attributo di join) ?
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight
demos88 è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2012, 10:02   #4
SaW
Member
 
Iscritto dal: Jun 2005
Messaggi: 286
Praticamente ho due file excel, uno di base e uno aggiornato con alcune informazioni che vengono ereditate dal file di base e altre informazioni modificate.
Attualmente si va a confrontare i due file manualmente e si cercano le differenze, io sto cercando di creare una query che dati in ingresso i due codici (uno del file di base e uno del file aggiornato), mi restituisca in automatico la tabella con le differenze.
Ho provato ad utilizzare il JOIN ma mi sono poi accorto che le tabelle non hanno lo stesso numero di colonne.
SaW è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2012, 13:38   #5
demos88
Senior Member
 
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
Quote:
Originariamente inviato da SaW Guarda i messaggi
Praticamente ho due file excel, uno di base e uno aggiornato con alcune informazioni che vengono ereditate dal file di base e altre informazioni modificate.
Attualmente si va a confrontare i due file manualmente e si cercano le differenze, io sto cercando di creare una query che dati in ingresso i due codici (uno del file di base e uno del file aggiornato), mi restituisca in automatico la tabella con le differenze.
Ho provato ad utilizzare il JOIN ma mi sono poi accorto che le tabelle non hanno lo stesso numero di colonne.
Non serve che abbiano lo stesso numero di colonne, basta che ne abbiano una che sia concettualmente utilizzabile come attributo del join, per esempio un id, che identifica univocamente la tupla (la riga), così da andare a comparare fra loro righe con id uguale.
Se le tabelle sono di questo tipo (uso lo schema logico relazionale):
Codice:
TabellaA(id, campo1, campo2, campo3)
TabellaB(id, campo1, campo2, campo3, campo4)
Puoi fare una query del tipo:
Codice:
SELECT * FROM TabellaA a JOIN TabellaB b ON a.id = b.id WHERE a.campo1!=b.campo1 OR a.campo2 != b.campo2 OR a.campo3 != b.campo3;
Questa query confronta le righe delle tue tabelle che hanno id uguale fra loro e riporta tutti gli attributi di entrambe le tabelle per quelle righe che differiscono in almeno uno degli attributi campo1, campo2, campo3.
E' questo quello che ti serviva?
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight
demos88 è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2012, 09:31   #6
SaW
Member
 
Iscritto dal: Jun 2005
Messaggi: 286
Scrivendo la query come mi hai suggerito tu mi da un 'errore di sintassi nella proposizione FROM' e mi evidenzia il "JOIN".
Se provo ad utilizzare "INNER JOIN" mi da un 'errore di sintassi (operatore mancante) nell'espressione della query' e mi evidenzia il simbolo di diverso (!=).
SaW è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2012, 13:02   #7
demos88
Senior Member
 
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
Quote:
Originariamente inviato da SaW Guarda i messaggi
Scrivendo la query come mi hai suggerito tu mi da un 'errore di sintassi nella proposizione FROM' e mi evidenzia il "JOIN".
Se provo ad utilizzare "INNER JOIN" mi da un 'errore di sintassi (operatore mancante) nell'espressione della query' e mi evidenzia il simbolo di diverso (!=).
mah... su mysql 5.5 funziona perfettamente...
prova a esplicitare la ridenominazione (aggiungendo gli 'AS') e imporre un LEFT JOIN:
Codice:
SELECT * FROM TabellaA AS a LEFT JOIN TabellaB AS b ON a.id = b.id WHERE a.campo1 <> b.campo1 OR a.campo2 <> b.campo2 OR a.campo3 <> b.campo3;
Io tipicamente uso postgres o mysql, access l'ultima (e unica) volta che l'ho usato è stato alle superiori... potrebbero esserci delle imprecisioni di sintassi, ma dal punto di vista logico dovrebbe essere giusto.
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight

Ultima modifica di demos88 : 23-01-2012 alle 13:14.
demos88 è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2012, 15:51   #8
EnricoHU
Member
 
Iscritto dal: Feb 2009
Messaggi: 112
se non si ricorda la sintassi delle istruzioni SQL da includere nel codice VBA, basta creare una query e poi visualizzarla come SQL

in caso di ulteriori difficoltà si può usare la creazione guidata ...

ciao
EnricoHU è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2012, 14:09   #9
SaW
Member
 
Iscritto dal: Jun 2005
Messaggi: 286
Allora ragazzi ho maggiori informazioni riguardanti il mio problema, vediamo se riusciamo a fare un po' di chiarezza.

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. Probabilmente bisognerebbe usare una query annidata come clausola della LEFT JOIN?

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.

Ultima modifica di SaW : 31-01-2012 alle 14:11.
SaW è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2012, 21:00   #10
demos88
Senior Member
 
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
Continuo a non capire... anche perchè una query fatta così non riesco a trovarle un significato (magari il database potrebbe essere strutturato meglio?).
Fai prima a fare un esempio, scrivici qualche record esemplificativo per ogni tabella e poi l'esito atteso della query che ti serve.
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight
demos88 è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2012, 08:51   #11
SaW
Member
 
Iscritto dal: Jun 2005
Messaggi: 286
Non è un vero e proprio database, 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' scritti nella query del messaggio precedente), la query mi deve restituire le differenze che caratterizzano questi due codici.

Date due tabelle molto grosse, e dati due valori in input che filtrano e mi creano due tabelle più piccole, ho bisogno di fare la differenza tra queste due tabelle per ottenere le differenze.

Scrivendo la query su db Oracle utilizzando la MINUS l'operazione è semplicissima e il risultato ottenuto è giusto. La MINUS mi fa proprio la differenza tra le tabelle e mi restituisce solo la differenza tra le due.
Non riesco a capire perchè su Access non c'è una funzione esattamente uguale alla MINUS.
SaW è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2012, 13:59   #12
demos88
Senior Member
 
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
Se fornissi un esempio sarebbe tutto più chiaro, non riesco ancora a capire.
Comunque l'equivalente di MINUS (Oracle), nello standard SQL dovrebbe essere l'operatore EXCEPT DISTINCT
Prova a darci un occhio
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight
demos88 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla DJI Lito 1 e Lito X1 recensione: i nuovi droni p...
Sony World Photography Awards 2026: i premiati, anche italiani, il punto sulla fotografia di oggi Sony World Photography Awards 2026: i premiati, ...
Una settimana con Hyundai Ioniq 5 N-Line: diverte e convince Una settimana con Hyundai Ioniq 5 N-Line: divert...
Recensione OPPO Find X9 Ultra: è lui il cameraphone definitivo Recensione OPPO Find X9 Ultra: è lui il c...
Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet Ecovacs Deebot X12 OmniCyclone: lava grazie a Fo...
iPhone Ultra, periodo di lancio conferma...
Un anno fa debuttava Clair Obscur:&...
Tutte le offerte sugli smartphone ora pi...
Tutte le offerte sui TV ora su Amazon: u...
Xbox Game Pass sarà disponibile a...
La serie HONOR 600 avrà presto un...
Mova Viax 250 in prova: il robot tagliae...
Fat e-bike per tutti: sconti Engwe, pi&u...
Google conferma l'arrivo della nuova ver...
Apple ha trovato il modo per abbassare i...
OpenAI vuole tassare l'AI per dare a tut...
MacBook Air 15'' con chip M4 a 1.199€ su...
Samsung Galaxy S25 Edge 12/512GB a 854€ ...
Super offerta sul portatile gaming Acer ...
Nanotubi di carbonio più conduttivi del ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 17:34.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v