|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Feb 2008
Messaggi: 447
|
[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 |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Nov 2007
Messaggi: 122
|
con sum(quantita) hai la somma, quindi ti sommi le quantità in entrate meno quelle in uscita
![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Feb 2008
Messaggi: 447
|
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? |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Nov 2007
Messaggi: 122
|
Allora devi raggruppare utilizzando Gruoup By
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Feb 2008
Messaggi: 447
|
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à |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Feb 2008
Messaggi: 447
|
c'ho provato ma proprio non vuol darmi retta... come posso fare?
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Prova cosi'
Codice:
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) 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.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Feb 2008
Messaggi: 447
|
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... |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:02.