Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    41

    Array bidimensionale: riordinare, sommare e raggruppare...

    Buongiorno a tutti,
    ho un array bidimensionale di "prodotti":
    esempio:
    | marca | modello | alimentaz.| Tipologia | venditore | prezzo |
    Renault ; Twingo ; Benzina ; Auto; Carlo Rossi ; 5000
    Mercedes; ClasseA ; Diesel ; Auto ; Mario Bianchi; 10000
    Ford ; Mondeo ; Benzina; Auto; Carlo Rossi; 8000
    Mercedes; ClasseA ; Benzina; Auto ; Mario Bianchi; 12000
    Mercedes; Vito: Diesel; Furgone ; Sergio Pino; 20000
    Wolkswagen; Golf; Benzina; Auto ; Carlo Rossi ; 4000
    ecc. ecc..

    Da questi dati dovrei tirar fuori delle statistiche per "gruppi", da qui nasce la necessità di raggruppare i dati, ordinarli e sommarli....

    Vorrei cortesemente sapere secondo voi qual'è la strada piu semplice, ed efficace in termini di performance dell'esecuzione della pagina, in quanto i record potrebbero essere tanti...

    Conviene creare dei nuovi array per ogni gruppo di statistica che intendo ottenere e lasciare sempre intatto il mio array di prodotti iniziale?

    Quello che dovrei ottenere sono dei gruppi di questo tipo:

    Marche vendute: (raggruppamento per i record con lo stesso campo Marca)
    Renault: 1 articolo - Tot. 5000
    Mercedes: 3 articoli - Tot. 42000
    Ford: 1 articolo - Tot 8000
    Wolkswagen: 1 articolo - Tot 4000

    Modelli Venduti: (raggruppamento per i record con gli stessi campi Marca e anche Modello)
    Renault Twingo: 1 Articolo - tot 4000
    Mercedes Classe A: 2 articoli - Tot 22000
    Mercedes Vito: 1 articolo - Tot 20000
    Ford Mondeo: 1 articolo - Tot 8000
    ecc. ecc.

    Venditori: (raggruppamento per i record con lo stesso campo Venditore)
    Carlo Rossi: 3 articoli - Tot 31000
    Mario Bianchi: 2 articoli - Tot 13000
    Sergio Pino: 1 articolo - Tot 20000

    Tipologie vendute: (raggruppamento per i record con lo stesso campo Tipologia)
    Auto: 5 articoli - Tot 65000
    Furgoni: 1 articolo - Tot 20000

    Tipo di alimentazioni: (raggruppamento per i record con lo stesso campo Alimentazione)
    Benzina: 3 articoli - Tot 43000
    Diesel: 2 articol - Tot 24000


    Se ottenessi degli array per ogni singolo "gruppo" di statistiche, non sarebbe affatto male poterlo anche riordinare prima di stamparlo a video. (per esempio, il Gruppo dei Venditori: Ordinarlo gia per chi ha venduto di piu in termini di importo o di numero di articoli)

  2. #2
    in ASP classico gli array non dispongono di funzioni native di riordinamento, raggruppamento ecc. puoi però scaricarli in un recordset disconnesso (ma è limitato) o su una tabella temporanea di db e interrogarli quindi tramite comandi SQL

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    41
    Ciao, la mia idea di base era questa:

    -Ho gia l'array bidimensionale di tutti i miei prodotti (array_prodotti)

    1)tramite una funzione ASP lo riordino per esempio per marca

    2)Dim di array bidimensionare "statistiche_marche" vuoto del tipo (marca|articoli|importo)

    3)ciclo for dell' intero array prodotti,
    ogni qualvolta cambia la marca valorizzo una nuova riga dell'array statistiche_marche con il nome marca, la quantita e l'importo
    se invece la marca è uguale a quella del passaggio precedente aggiungo gli articoli e aggiungo l'importo

    4)tramite una funzione ASP riordino l'array statistiche_marche per importo

    5)stampo a video l'array statistiche marche


    -Faccio lo stesso procedimento per gli altri gruppi di statistiche che devo proporre, riordinando l'array_prodotti per esempio per Tipologia e ricomincio dal punto 2, facendo un nuovo Dim di un array bidimensionale "statistiche_tipologie"


    Potrebbe essere una soluzione percorribile?

  4. #4
    io ti ho suggerito una soluzione alternativa, ma fa' pure come preferisci

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    41
    Ciao, la tua soluzione é apprezzata...
    ho esposto quale era la mia idea di base... secondo la tua esperienza personale...quale ti sembra la soluzione migliore in termini di velocità/complessità/performance ?
    la mia idea di base o la tua?

    Vorrei avere un consiglio prima di mettermi all'opera con l'esecuzione vera e propria

  6. #6
    ti dirò che non ho mai pensato di mettermi a giocare con gli array in quel modo (forse negli anni 80 ci si poteva pensare): con sql ho le funzioni native e quindi lavoro con quello (scusa, ma i dati che metti nell'array da dove li prendi?)

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    41
    Ciao,
    i dati li prendo da un Db access a cui posso accedere....
    C'è una Tabella con le righe di prodotti.
    N.B. ogni riga di prodotti può avere anche quantita maggiore di 1

    Potrei fare una SELECT per ogni gruppo di statistiche che dovrei creare

    Il mio problema è la sintassi delle SELECT...non sono molto ferrato sul raggruppamento e la somma...


    Suppongo che per avere una statistica delle marche vendute io debba costruire una SELECT di questo tipo:

    SELECT gruppo_marca AS DISTINCT(marca), tot_articoli AS SUM(quantita), tot_venduto AS SUM(prezzo*quantita) FROM TAB_prodotti order by tot_venduto desc

    e poi fare il classico ciclo while per stampare a video

    Rs("gruppo_marca "): Rs("tot_articoli") - Rs("tot_venduto")


    Se solo sapessi come comporre select di questo tipo....

  8. #8
    ma allora! se hai già un db perché impazzire con gli array?

    per le query, dipende da cosa vuoi fare.

    primo, ti consiglio di iniziare a studiare SQL partendo da qui http://msdn.microsoft.com/en-us/library/aa140011(office.10).aspx (potresti anche usare gli strumenti di composizione delle query che hai in access, che poi con copia&incolla userai in asp)

    poi, per domande specifiche ti conviene postare nel forum database

    buon lavoro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.