PDA

View Full Version : Interrogazione SQL in Access aiuto !!!!!!


leon84
19-03-2004, 17:09
Salve , ho realizzato in access un piccolo database per la gestione delle giacenze di un magazzino ..... vi elenco velocemente le tabelle realizzate :

articoli (contiene gli articoli possibili per il magazzino)
entrate (sarebbero gli articoli con numero pezzi che vengono depositati in magazzino)
trasferimenti (contiene gli ordini di trasferimento della merce; chiaramente ogni ordine potrà trasferire più di un articolo e quindi ne sarà indicata la quantità; ciè che l'ordine trasferisce è elencato nella teballe successiva )
articoli_trasferiti (articoli trasferiti in ciascun ordine di trasferimento )

Ora la query che voglio realizzare e che penso si possa fare solo con le stored procedure è la seguente . Per calcolarmi le giacenze di magazzino dovrei sommare il numero di pezzi di ciascun articolo raggruppando per il codice articolo e sottraendo a questo valore il numero di articoli trasferiti ) Come diavolo imposto questa query ??????

cionci
19-03-2004, 19:44
Select A.IDArticolo, entr - usc As giacenza
From [Select IDArticolo, Sum(quantita) as entr FROM entrate GROUP BY IDArticolo]. As A, [Select IDArticolo, Sum(quantita) as entr FROM articoli_trasferiti GROUP BY IDArticolo]. As B
Where A.IDArticolo = B.IDArticolo;

leon84
19-03-2004, 21:11
Originariamente inviato da cionci
Select A.IDArticolo, entr - usc As giacenza
From [Select IDArticolo, Sum(quantita) as entr FROM entrate GROUP BY IDArticolo]. As A, [Select IDArticolo, Sum(quantita) as entr FROM articoli_trasferiti GROUP BY IDArticolo]. As B
Where A.IDArticolo = B.IDArticolo;

Beh che dire ..... sei un grande cionci !!!!! Sai cosa mi mancava ???? Nn credevo che il Select potesse essere annidato nel FROM ... Ne ho fatti a nscuola di esercizi ma con i select annidati dopo where ..... Mi hai insegnato un'altra cosa ....

------------------------------------------------------------------------------------

Era da tempo che nn ti sentivo ..... come va con l'università ????

Lo sai che per me sei un esempio cionci e quindi mi sono iscritto alla stessa tua facoltà .... Ho dato purtroppo soltanto due esami su quattro ..... elementi di informatica (30/30) e Analisi I (27/30) . Che incazzatura con analisi .... ho preso 30 allo scritto e poi all'orale mi ha interrogato una prof rompiscatole :cry: .

cionci
20-03-2004, 02:54
Ehm..lasciamo perdere l'università :p

Bene...dai...impegnati !!! Sono contento che tu ti sia iscritto a ing. informatica... Le prime materie sono toste ;)

leon84
20-03-2004, 20:09
Ho utilizzato la query soltanto che ho questo problema . Giustamente se un prodotto viene scaricato in magazzino e mai prelevato (cioè mai trasferito) nella query delle giacenze nn mi viene visualizzato siccome nella tabella B da te creata nn esisterebbe quell'articolo . Io voglio però che cmq venga visualizzato ..... come faccio ?

cionci
21-03-2004, 19:54
Select A.IDArticolo, entr - usc As giacenza
From [Select IDArticolo, Sum(quantita) as entr FROM entrate GROUP BY IDArticolo]. As A LEFT JOIN [Select IDArticolo, Sum(quantita) as usc FROM articoli_trasferiti GROUP BY IDArticolo]. As B ON A.IDArticolo = B.IDArticolo;

Spero che questa sintassi vada bene per access... Prova e fammi sapere...

leon84
22-03-2004, 08:44
Allora la sintassi Access l'accetta soltanto che quando un prodotto nn viene prelevato e quindi solo scaricato nn mi visualizza la giacenza che dovrebbe essere (entr-0) . Altra cosa ... nn è che mi spiegheresti un pò questa query ?

Una left join tra due tabelle permette di prendere tutte le righe di quella di sinistra anche se nn ci sono valori uguali per attributi comuni giusto ? Quell'on che fa ?

The March
22-03-2004, 12:09
Originariamente inviato da leon84
Allora la sintassi Access l'accetta soltanto che quando un prodotto nn viene prelevato e quindi solo scaricato nn mi visualizza la giacenza che dovrebbe essere (entr-0) . Altra cosa ... nn è che mi spiegheresti un pò questa query ?

Una left join tra due tabelle permette di prendere tutte le righe di quella di sinistra anche se nn ci sono valori uguali per attributi comuni giusto ? Quell'on che fa ?

tutto giusto, on è come dire quando
on A.IDArticolo = B.IDArticolo
è come dire quando A.IDArticolo è uguale a B.IDArticolo

;)

leon84
22-03-2004, 19:39
Originariamente inviato da The March
tutto giusto, on è come dire quando
on A.IDArticolo = B.IDArticolo
è come dire quando A.IDArticolo è uguale a B.IDArticolo

;)

Beh allora perché nn utilizzare direttamente l'operatore "=" ? cmq riguardo all'altro problema come posso ovviare ?

leon84
22-03-2004, 19:45
Riguardo all "ON" mi sono documentato .... In effetti quando una usa INNER JOIN O LEFT JOIN O RIGHT JOIN è proprio la sintassi che prevede l'"ON" . Resta però il secondo problema ....

The March
23-03-2004, 08:16
Originariamente inviato da leon84
Riguardo all "ON" mi sono documentato .... In effetti quando una usa INNER JOIN O LEFT JOIN O RIGHT JOIN è proprio la sintassi che prevede l'"ON" . Resta però il secondo problema ....


si per le join la sintassi prevede on, l'uguale lo usi dopo...
left join tab1 on tab1.col1=tab2.col1
Per il tuo problema mi spiace ma ora non ho tempo... appena posso ci do un'occhiata

cionci
23-03-2004, 09:01
Select A.IDArticolo, entr - usc As giacenza
From [Select IDArticolo, Sum(quantita) as usc FROM articoli_trasferiti GROUP BY IDArticolo]. As B LEFT JOIN [Select IDArticolo, Sum(quantita) as entr FROM entrate GROUP BY IDArticolo]. As A ON A.IDArticolo = B.IDArticolo;

Ho invertito le tabelle :(
Non se su usc ci vuole un IIF che dica se è usc è null allora bisogna riotarnare solo entr... Comunque prova

leon84
23-03-2004, 18:32
nulla da fare cionci .... invertendo le tabelle nn mi visualizza gli articoli che nn sono presenti nella tabella articoli_trasferiti