Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Query

Ho un problema che non riesco a risolvere (ci sto sbattendo la testa da
giorni).....
Quattro Tabelle di un database:
- Prodotti : Id_Prodotto, Prodotto, Prezzo_Unitario,...
- Movimenti_Magazzino: Id_Movimento, Id_Operazione (chiave nella tabella
Operazioni),
  Id_Prodotto (chiave nella tabella Prodotti), Quantità, Cancellata
(boleano),....
- Operazioni: Id_Operazione,Tipo_Operazione (numerico: carico, scarico,
distruzione, ecc..), Data,
  Contabilizzata (boleano),...
- Giacenza: Id_Prodotto, Quantità,...
Quesito:
Voglio (vorrei) sapere ad una certa data, il movimento del magazzino,
suddiviso per tipo di operazione, raggruppato per prodotto e la rimanenza
per i prodotti movimentati.
Ho elaborato due query che mi forniscono la movimentazione e la rimanenza.
Ho utilizzato il DataEnvironment e dato che la query "Movimenti" non mi
mostra i campi risultato, non posso (o forse non so!) collegarla alla query
della "Rimanenza".
Le due query sono:
"Movimenti":
TRANSFORM SUM(Movimenti_Magazzino.Quantità) AS SommaDiQuantità
SELECT Prodotti.Prodotto, Prodotti.Prezzo_Unitario
FROM Prodotti INNER JOIN (Operazioni INNER JOIN  Movimenti_Magazzino ON
          Operazioni.Id_Operazione = Movimenti_Magazzino.Id_Operazione) ON
          Prodotti.Id_Prodotto = Movimenti_Magazzino.Id_Prodotto
WHERE (((Operazioni.Tipo_Operazione) > 0) AND ((Operazioni.Contabilizzata =
1) AND
             ((Movimenti_Magazzino.Cancellata) = 0) AND
             ((Operazioni.Data) = ?))
GROUP BY Prodotti.Prodotto, Prodotti.Prezzo_Unitario
PIVOT Operazioni.Tipo_Operazione;
Risultato: Id_Prodotto, Prodotto, Prezzo_Unitario, QuantitàTipoOperazione_1,
QuantitàTipoOperazione_2, ecc...
"Rimanenza":
SELECT Giacenza.Id_Prodotto,
SUM(Movimenti_Magazzino.Quantità + Giacenza.Quantità) AS Rimanenza
FROM Giacenza, Movimenti_Magazzino, Operazioni
WHERE Giacenza.Id_Prodotto = Movimenti_Magazzino.Id_Prodotto AND
             Movimenti_Magazzino.Id_Operazione = Operazioni.Id_Operazione
GROUP BY Operazioni.Data, Giacenza.Quantità,
                  Movimenti_Magazzino.Cancellata,
Operazioni.Tipo_Operazione,
                  Operazioni.Contabilizzata, Giacenza.Id_Prodotto
HAVING (Movimenti_Magazzino.Cancellata = 0) AND
             (Operazioni.Tipo_Operazione > 0) AND
             (Operazioni.Contabilizzata = 1) AND
             (Operazioni.Data <= ?)
Risultato: Id_Prodotto, Rimanenza
Domanda:
E' possibile risolvere il problema con una sola Query o in alternativa,
metterle in relazione tra loro nel DataEnvironment?
Sarò eternamente grato a tutti coloro che vorranno aiutarmi nella
risoluzione.
Ironman

 sapere ad una certa data, il movimento del magazzino, suddiviso
per tipo di operazione, raggruppato per prodotto e la rimanenza
per i prodotti movimentati.
  Scusa ma sono malato:
    Voglio sapere ad una certa data, il movimento di magazzino
e` diverso da:
    Voglio sapere il movimento di magazzino ad una certa data
  Nel primo caso serve qualcosa tipo un timer. ;-)

  Forse una sottoquery risolverebbe ma data la complessita` delle
query che proponi non riesco in 4+4=8 a farti un esempio. Potresti
sperimentare con un esempio semplificato.
--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------

 Maurizio
Ho tentato anch'io con una subquery, ma non ci sono riuscito. Ho ottenuto
solo dei messaggi d'errore.
Comunque se hai qualche idea su come impostare la richiesta, fammi sapere.
Grazie comunque per l'interessamento.
Ciao.
Ironman


[...]

 id_Prodotto+Id_Operazione.
...e non solo. I movimenti che m'interessa visualizzare riguardano solo
quelli nella data selezionata, mentre per il calcolo delle rimanenze devo
tener conto di tutte le operazioni effettuate fino a quella data.
Grazie per il consiglio. Vediamo cosa riesco a fare.
Ciao.
Ironman