View Full Version : sql... chi mi aiuta?
ciao a tutti.
sono riuscito ha impostare questa query che mi permette di ricavare le giacenze di magazzino ( facendo la differenza degli articoli caricati/scaricati tramite numero seriale del prodotto).
Ora avrei la necessita di ricavare la disponibilità (differenza tra giacenze/impegnato)
tab. carico
cod.articolo descrizione n_serial
tab. scarico
cod.articolo descrizione n_serial
query giacenze:
SELECT carico.cod_articolo, carico.descrizione, count(*) AS Quantità
FROM carico LEFT JOIN scarico ON carico.n_serial = scarico.n_serial
WHERE (((scarico.n_serial) Is Null))
GROUP BY carico.cod_articolo, carico.descrizione
ORDER BY carico.descrizione;
query Giacenze
cod_articolo descrizione Quantità
tab. impegnato
cod.articolo descrizione cliente quantità data
mi basta aggiungere un campo alla query
cod_articolo descrizione Quantità Disponibilità
be sembra facile a spiegare.. il concetto mi e' chiaro ma non riesco ad impostare la query
ringrazio anticipatamente
zakzakit
05-11-2003, 10:04
Originariamente inviato da gbv
query giacenze:
SELECT carico.cod_articolo, carico.descrizione, count(*) AS Quantità
FROM carico LEFT JOIN scarico ON carico.n_serial = scarico.n_serial
WHERE (((scarico.n_serial) Is Null))
GROUP BY carico.cod_articolo, carico.descrizione
ORDER BY carico.descrizione;
Per poterti rispondere, devo capire alcune cose.
1. Ti funziona questa query?
Dovrebbe unire tutti i record di carico e di scarico con n_serial=null, quindi generalmente non dare alcun risultato.
2. Se n_serial serve ad identificare l'articolo, cod_articolo a che cosa serve?
ciao grazie per l'interesse...
La query (giacenze) funziona, praticamente elimina (carico - scarico) tutti quei record che hanno n_seriale uguale ,
raggruppa (quantità) i rimaneti per codice articolo
Quale DBMS stai usando ? Ad occhio serve una subquery...
zakzakit
05-11-2003, 10:39
Se la query giacenze funziona, la query disponibilità potrebbe essere:
SELECT giacenze.cod_articolo, [giacenze].[quantità]-nz([impegnato].[quantità]) AS Disponibiltà
FROM giacenze LEFT JOIN impegnato ON giacenze.cod_articolo = impegnato.cod_articolo
(La funzione nz() trasforma null in zero).
(Mi sembra che la query giacenze non funzioni se ho solamente dei carichi. Però forse non ho ancora capito bene l'utilizzo di n_serial)
zakzakit
05-11-2003, 10:42
Meglio così:
SELECT giacenze.cod_articolo, [giacenze].[quantità]-nz([impegnato].[quantità],0) AS Disponibiltà
FROM giacenze LEFT JOIN impegnato ON giacenze.cod_articolo = impegnato.cod_articolo
zakzakit
05-11-2003, 10:52
Io le giacenze le farei così:
query qcarico
SELECT carico.cod_articolo, Count(carico.cod_articolo) AS qtacarico
FROM carico
GROUP BY carico.cod_articolo
query qscarico
SELECT scarico.cod_articolo, Count(scarico.cod_articolo) AS qtascar
FROM scarico
GROUP BY scarico.cod_articolo
query giacenze
SELECT qcarico.cod_articolo, [qcarico].[qtacarico]-nz([qscarico].[qtascar],0) AS disponibilità
FROM qcarico LEFT JOIN qscarico ON qcarico.cod_articolo = qscarico.cod_articolo
zakzakit
05-11-2003, 10:54
Scusa, query giacenze non "as disponibilità" ma "as quantità"
potrebbe funzionare , ma non nel mio caso.
la gestione del carico/scarico nel mio prog e' un po' particolare
ti faccio un esempio
carico :
cod_articolo descrizione n_serial
12340 mouse 2589636
12340 mouse 2589634
12340 mouse 2589637
23569 tastiera 1258961
scarico:
cod_articolo descrizione n_serial
12340 mouse 2589634
giacenze (non raggruppate):
cod_articolo descrizione n_serial
12340 mouse 2589636
12340 mouse 2589637
23569 tastiera 1258961
giacenze (raggruppate):
cod_articolo descrizione quantità
12340 mouse 2
23569 tastiera 1
spero di essere stao piu' chiaro.
ora poniamo il caso che un cliente mi impegni un articolo
impegnato:
cod_articolo descrizione quantita
12340 mouse 1
la mia query dovrebbe...
cod_articolo descrizione quantità
12340 mouse 2(giacenza reale)- ( 1 impegnato)= 1(disponibile)
spero che mi possa aiutare
grazie
23569 tastiera 1
zakzakit
05-11-2003, 13:19
Ho inserito i tuoi dati nel mio db, ed utilizando indifferentemente la tua o la mia query giacenze ottengo:
giacenze:
mouse 2
tastiera 1
disponibilità:
mouse 1
tastiera 1
Che cosa non va?
la query delle disponibilità come l'hai creata?
io devo interfacciare tutto in vb (la query giacenze e' stata già fatta) volevo appogiarmi a quella per creare la query disponibilità.
zakzakit
05-11-2003, 16:18
query disponibilità:
SELECT giacenze.cod_articolo, [giacenze].[quantità]-nz([impegnato].[quantità]) AS Disponibiltà
FROM giacenze LEFT JOIN impegnato ON giacenze.cod_articolo = impegnato.cod_articolo
ho scritto la query che mi hai detto pero....
vb non riesce a trovare la tabella o la query di input ' giacenze'( è normale)
come posso fare?
zakzakit
05-11-2003, 17:40
Io sto provando questi esempi internamente in Access, tu che cosa stai usando?
zakzakit
05-11-2003, 19:46
Spiacente, non posso aiutarti. Il mio VB6 si rifiuta di interfacciarsi con il db access dicendo che non ne riconosce il formato. Probabilmente è troppo vecchio per access 2000.
dovresti convertirlo in access97
access2000 non va con vb6
ti ringrazio cmq
ciao
Access2000 va con VB6...bastta mettere il service pack 5 ;)
zakzakit
06-11-2003, 13:51
Originariamente inviato da cionci
Access2000 va con VB6...bastta mettere il service pack 5 ;)
Grazie dell'informazione.
questa non la sapevo ,grazie.
zakzakit la tua query non funziona in maniera corretta
cionci mi potresti aiutare?
Se la tua query funziona:
cod.articolo descrizione cliente quantità data
SELECT carico.cod_articolo, carico.descrizione, count(*) AS Quantità, count(*)-B.Impegnati As Disponibilità
FROM carico LEFT JOIN scarico ON carico.n_serial = scarico.n_serial,
[SELECT cod_articolo, count(*) As Impegnati
FROM Impegnati GROUP BY cod_articolo] As B LEFT JOIN carico ON carico.cod_articolo = carico.cod_articolo
WHERE (((scarico.n_serial) Is Null))
GROUP BY carico.cod_articolo, carico.descrizione, B.Impegnati
ORDER BY carico.descrizione;
Prova così...la sintassi delle subquery nel FROM non me la ricordo di preciso... Comunque inserendo la query in un Query all'interno di Access te la dovrebbe correggere....
proverò questa sera e ti farò sapere.
grazie
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.