Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-01-2012, 15: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, 17: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, 17: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, 11: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, 14: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, 10: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, 14: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 14:14.
demos88 è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2012, 16: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, 15: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 15:11.
SaW è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2012, 22: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, 09: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, 14: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


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Nuove informazioni sul fallimento del la...
SpaceX: completato parte dell'assemblagg...
Landspace si prepara al secondo lancio d...
Tutti gli sconti Apple su Amazon: tornan...
Altro che entry-level: due smartwatch Am...
Roscosmos ha posticipato (ancora) il lan...
Isar Aerospace si prepara al secondo lan...
Tory Bruno è entrato in Blue Orig...
Fujifilm lancia la cartuccia per archivi...
Dreame H15 Mix: la soluzione 7-in-1 per ...
AirPods Pro 3 in forte sconto su Amazon:...
36 offerte Amazon, molte appena partite:...
2 caricatori multipli eccezionali: da 28...
OLED e 360 Hz a un prezzo senza preceden...
Roborock Q10 S5+ a un prezzo molto conve...
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: 04:56.


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