Newsgroup: it.comp.lang.delphi
Titolo: OT SQL

Ciao a tutti,
   ho i dati distribuiti in diverse tabelle e per poterli leggere devo 
interrogare tutte quelle coinvolte.
Nel caso specifico ho da analizzare le vendite degli ultimi 2 anni di 
determinati prodotti con il risultato, messo in una griglia, di questo tipo
 
EAN            Prodotto    Vendite totali 2018 2017 2016
12345678   Test           300                  125    95    80
 
Poi cliccando sulla cella 95 (riferita al 2017) espongo il dettaglio mese 
per mese riferito a quell'articolo
 
Per farla breve ho la tabella dei gruppi di prodotti (salvati con l'ean), la 
tabella delle vendite (header) del dettaglio delle vendite, alcune 
informazioni (opzionali) sono registrare in altre tabelle come magazzino 
(riferimento ean), ditta produttrice (riferimento codice ditta) ecc..
Ora con una query ottengo i dati necessari, poi utilizzando gli ean nella 
tabella dei gruppi, filtrando ean per ean (operazione non troppo veloce ma 
neanche troppo lenta, 4-7 secondi) estraggo i dati per i singoli prodotti.
Ovviamente nei gruppi non ci sono chissa' quanti articoli (ad oggi qualche 
decina), ma la queri restituisce diverse decine di migliaia di record.
La query di estrazione e'
 
Select DettaglioVendite.*, Vendite.* From GruppoArticoli
 
            Inner Join DettagliVendite on 
DettaglioVendite.EAN=GruppoArticoli.EAN
 
            Inner Join Vendite on 
Vendite.IDVendita=DettaglioVendite.IDVendita
 
            Where Vendite.Anno Between 2018-2 And 2018
 
 
 
I recod mediamente restituiti sono 45-60 mila suddivisi per 1000-2500 per 
articolo.
 
 
 
Esiste una query che in una volta mi possa restituire un record come quello 
sopra ?
 
 
 
Ho provato con quest'altra query
 
 
 
Select Distinct DettaglioVendite.EAN From DettaglioVendite
 
            Inner Join GeuppoArticoli on 
GruppoArticoli.EAN=DettaglioVendite.EAN
 
            Inner Join Vendite on 
Vendite.IDVendita=DettaglioVendite.IDVendita
 
            Where Vendite.Anno Between 2018-2 And 2018
 
 
 
Dove ho gli ean solo di quegli articoli presenti nella tabella dei gruppi.
 
Questa volta i record restituiti sono neache 500.
 
Non so come inserire gli altri dati, devo usare sub query ?
 
 
 
Scusate l'off topic
 
 
 
Grazie
 
 
 
ciao
 
 
 
Daniele
 
 
 
 
 
 
 
 
 
 
 
 

ciao a tutti,
    piccolo miglioramento
 
 
Select Distinct DettaglioVendite.EAN, Count(DettaglioVendite.EAN) As 
VenditeTot From DettaglioVendite
 
            Inner Join GruppiArticoli on 
GruppiArticoli.EAN=DettaglioVendite.EAN
 
            Inner Join Vendite on 
Vendite.IDVendita=DettaglioVendite.IDVendita and Vendite.ANNO Between 2018-2 
and 2018
 
            Group By DettaglioVendite.EAN
 
 
 
Ora ho i codici ean con i totali dei movimenti dei 3 anni in 3 righe diverse
 
 
 
12345678 125
 
12345678 100
 
12345678   90
 
90123456 200
 
90123456 136
 
90123456 100
 
 
 
 
Il risultato da ottenere dovrebbe essere
 
 
 
12345678 125 100   90
 
90123456 200 136 100
 
 
 
Piano piano ci arrivo ...
 
 
 
Ciao
 
 
 
Daniele
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Scusate,
    riga errata ...
 
    Group By DettaglioVendite.EAN, Vendite.ANNO
 
Per avere i 3 anni ...
 
Grazie
 
ciao
 
Daniele