Newsgroup: it.comp.appl.access
Titolo: Query logistico-culinaria :)

Ciao a tutti,
avrò ricominciato 100 volte a riscrivere 'sta query. Mi sfugge
qualcosa...
Semplifico la faccenda, tanto non riesco neanche semplificando... :)
Devo gestire la logistica di un magazzino:
tabMovimenti:
    ID    DATA    ARTICOLO    POSIZIONE
    1     08:00     Pentola         Ripostiglio
    2     09:00     Scopa           Balcone
    3     10:00     Pentola         Sportello
    4     11:00     Scopa           Ripostiglio
    5     12:00     Posate          Cassetto
Devo ottenere 2 report
RiepilogoArticoli
    ARTICOLO    POSIZIONE
    Pentola         Sportello
    Posate          Cassetto
    Scopa           Ripostiglio
RiepilogopPosizioni
    POSIZIONE    ARTICOLO
    Cassetto        Posate
    Balcone         --
    Ripostiglio      Scopa
    Sportello        Pentola
Come fareste?
Grazie per l'attenzione,
--
Daniele M. aka mcdany

 
select posizione,articolo from magazzino group by articolo,posizione 
order by posizione
--
cut

 > avrò ricominciato 100 volte a riscrivere 'sta query. Mi sfugge

na, non funzia. L'Output della tua è questo:
posizione	articolo
Cassetto	Posate
Balcone	Scopa --> qui non ci dovrebbe essere niente
Ripostiglio	Pentola --> questa riga non ci dovrebbe essere
Ripostiglio	Scopa
Sportello	Pentola
Ciao
Daniele M. aka mcdany

 na, non funzia. L'Output della tua � questo:
controlla i dati sulla tabella.
Non credo di aver fatto errori in una query cosi' semplice.
Una scopa in Balcone dovresti averla messa ed almeno ua pentola e' 
finita nel ripostiglio.
Come lavoratore domestico lasci a desiderare
--
ac

mcdany ha scritto:
[cut]
Se non avvisi quando fai il multipost forse e' meglio che fai un xpost.
--
ac

 Balcone Scopa --> qui non ci dovrebbe essere niente
ID n.2, ore 9
-- 
Greg 

 ha scritto nel messaggio 
news:d2522bfd-270d-466a...@75g2000hso.googlegroups.com...
Ciao a tutti,
avr� ricominciato 100 volte a riscrivere 'sta query. Mi sfugge
qualcosa...
Semplifico la faccenda, tanto non riesco neanche semplificando... :)
Devo gestire la logistica di un magazzino:
tabMovimenti:
    ID    DATA    ARTICOLO    POSIZIONE
    1     08:00     Pentola         Ripostiglio
    2     09:00     Scopa           Balcone
    3     10:00     Pentola         Sportello
    4     11:00     Scopa           Ripostiglio
    5     12:00     Posate          Cassetto
Devo ottenere 2 report
RiepilogoArticoli
    ARTICOLO    POSIZIONE
    Pentola         Sportello
    Posate          Cassetto
    Scopa           Ripostiglio
RiepilogopPosizioni
    POSIZIONE    ARTICOLO
    Cassetto        Posate
    Balcone         --
    Ripostiglio      Scopa
    Sportello        Pentola
Come fareste?
-----------------
RISPOSTA:
Ciao Daniele,
per ottenere il primo report devi prima creare una query che ti mostri per 
ogni articolo l'ultima ora relativa ad uno spostamento che chiamiamo ad 
esempio "ultimiSpostamenti":  "SELECT Movimenti.Articolo, 
Max(Movimenti.Data) AS MaxDiData FROM Movimenti GROUP BY 
Movimenti.Articolo;"
Poi per ottenere il riepilogo articoli: "SELECT Movimenti.Articolo, 
Movimenti.Posizione
FROM UltimiSpostamenti INNER JOIN Movimenti ON (UltimiSpostamenti.Articolo = 
Movimenti.Articolo) AND (UltimiSpostamenti.MaxDiData = Movimenti.Data)
ORDER BY Movimenti.Articolo;"
Mentre per ottenere il riepilogo posizioni: "SELECT Posizioni.Posizione, 
RiepilogoArticoli.Articolo
FROM Posizioni LEFT JOIN RiepilogoArticoli ON Posizioni.Posizione = 
RiepilogoArticoli.Posizione;"
dove posizioni � la tabella che contiene l'elenco delle posizioni del 
magazzino (immagino tu abbia semplificato e che usi id anzich� testo, ma il 
discorso non cambia).
--------------
Grazie per l'attenzione,
--
Daniele M. aka mcdany
----------------
Ciao
Nina


si, ma nella riga 4 è stata spostata...

 discorso non cambia).
Grazie nina, ok. Ho trovato un altro paio di soluzioni, 1 in MPIOA ed
una è mia. Le riporto sotto. Mi rimangono da fare delle prove per
vedere qual'è più performante.
Questa dovrebbe assomigliare molto alla tua soluzione:
SELECT tabMovimenti.ID, tabMovimenti.Data, tabMovimenti.ARTICOLO,
tabMovimenti.POSIZIONE
FROM tabMovimenti INNER JOIN
(SELECT Max(tabMovimenti.Data) AS OraMax, tabMovimenti.ARTICOLO FROM
tabMovimenti GROUP BY tabMovimenti.ARTICOLO) As qryOraMax
ON tabMovimenti.Data = qryOraMax.OraMax;
oppure
SELECT * FROM Magazzino
WHERE Magazzino.ID=(SELECT TOP 1 qryUltimoMovimento.ID FROM Magazzino
as qryUltimoMovimento WHERE
qryUltimoMovimento.Articolo=Magazzino.Articolo ORDER BY Data DESC);
Ancora grazie,



Accedniamo l'x-post + avviso... o vuoi proprio che mi faccio un
account diverso e cambio un po' le parole nei messaggi? :)
Saluti,
-
Daniele M. aka mcdany

mcdany ha scritto:

As you like, il mio mito e' Bakunin.
--
ac

 ac
Da oggi anche il mio!
