View Full Version : [SQL] semplice interazione tra 2 tabelle access
ho due tabelle, in una ho gli arrivi e in una le uscite
entrambe le tabelle hanno due campi
- codice articolo
- quantità
ogni volta che mi arriva un certo articolo, lo scrivo nella tabella arrivi, e quando ne esce una certa quantità lo segno nella tabella uscite
come faccio a sapere quanta roba m'è rimasta?
mi servirebbe da fare un
SELECT arrivi.quantità - uscite.quantità
from arrivi, uscite
where ?????
come faccio?
a logica farei così
direi prima di sommare tutte le quantità di ogni codice articolo in modo da sapere la quantità totale arrivata di ogni articolo
poi dovrei fare la stessa cosa per le uscite ed infine sottrarre tra di loro le quantità col medesimo articolo
ma... come posso farlo?
dovrebbe esser semplice
con sum(quantita) hai la somma, quindi ti sommi le quantità in entrate meno quelle in uscita :D
già, ma per fargli sommare solo le quantità relative ai vari articoli?
nella tabella ARRIVI le entrate relative ad un articolo sono più di una, stesso dicasi per le USCITE
che condizione devo mettere?
where DISTINCT codice articolo?
Allora devi raggruppare utilizzando Gruoup By
ho risolto tutto, solo una cosa
devo anche sottrarre dei valori tra le due tabelle, solo che quando il rispettivo campo non compare nella seconda, la tabella finale mi da campo null
mi spiego meglio con un esempio pratico
tabella 1
mele 12
pere 13
banane 14
tabella 2
mele 5
pere 6
come risultato mi da
tabella risultante
mele 7
pere 7
banane [campo vuoto]
come faccio?
ps ho usato il left join per avere anche la riga banane nel risultato, ma non riesco a far calcolare il valore della quantità
c'ho provato ma proprio non vuol darmi retta... come posso fare?
Prova cosi'
SELECT IDEntrate, qtaen, qtaus,
CASE WHEN qtaen IS NULL THEN 0 ELSE qtaen END -
CASE WHEN qtaus IS NULL THEN 0 ELSE qtaus END AS Rimasti
FROM (
SELECT IDEntrate,SUM(Entrata) qtaen
FROM Entrate
GROUP BY IDEntrate) EN
LEFT OUTER JOIN
( SELECT IDUscite,SUM(Uscite) qtaus
FROM Uscite
GROUP BY IDUscite) US
ON (EN.IDEntrate=US.IDUscite)
In pratica prima sommi, poi fai la LEFT JOIN e poi se uno delle 2 parti e' NULL, la sostituisci con 0 prima di fare la sottrazione.
Questo se ACCESS supporta la funzione CASE, altrimenti sono praticamente certo che ne supportera' un surrogato.
Altrimenti buttalo, cosa che dati gli ultimi tipi di licenza di altri motori professionali (praticamente gratis) ti consiglio comunque.
ok, grazie mille per gli aiuti, ora tutto è pronto, le tabelle sono pronte e le query create
ora... mi serve da creare una gestione del tutto sempre tramite access, utilizzando le maschere per semplificare il lavoro e l'immissione dei dati
come faccio, ad esempio, a fare una maschera per aggiungere un elemento ad una tabella esistente?
come faccio invece a fare una maschera relativa ad una query? in questo caso, come faccio a far comparire il menu a tendina con i suggerimenti alle eventuali possibili scelte?
ad esempio, quando vado ad inserire una nuova uscita, vorrei che nel campo relativo al codice dell'articolo mi suggerisca gli elementi ancora presenti nel magazzino...
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.