Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 19 su 19
  1. #11
    E no .... siamo il max del min..... questo lo dovresti sapere da te....

    metti un campo mese nel select.... e usalo pure nel group by....
    codice:
    SELECT table3.nomecampo,
    FROM_UNIXTIME(miadata, '%m') as mese,
    SUM(quantita) AS totale,
    SUM(opzione1*quantita) AS opzione1,
    SUM(opzione2*quantita) AS opzione2,
    SUM(opzione3*quantita) AS opzione3,
    SUM((opzion1*quantita)+(opzione2*quantita)+(opzione3*quantita)) AS totale_prezzo
    FROM table1 LEFT JOIN table3 USING (productid)
    LEFT JOIN table2 USING (fieldid)
    WHERE table2.field='product_group' AND FROM_UNIXTIME(miadata, '%Y') = $Year
    GROUP BY table3.nomecampo, mese;

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  2. #12
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    Originariamente inviato da piero.mac
    E no .... siamo il max del min..... questo lo dovresti sapere da te....

    metti un campo mese nel select.... e usalo pure nel group by....
    codice:
    SELECT table3.nomecampo,
    FROM_UNIXTIME(miadata, '%m') as mese,
    SUM(quantita) AS totale,
    SUM(opzione1*quantita) AS opzione1,
    SUM(opzione2*quantita) AS opzione2,
    SUM(opzione3*quantita) AS opzione3,
    SUM((opzion1*quantita)+(opzione2*quantita)+(opzione3*quantita)) AS totale_prezzo
    FROM table1 LEFT JOIN table3 USING (productid)
    LEFT JOIN table2 USING (fieldid)
    WHERE table2.field='product_group' AND FROM_UNIXTIME(miadata, '%Y') = $Year
    GROUP BY table3.nomecampo, mese;
    mi hai anticipato, lo stavo per scrivere io, avevo risolto nel frattempo... grazie per ora, spero di non dover più ripassare da questo post.
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  3. #13
    Originariamente inviato da blekm
    ho una tabella da 30.000 records
    ne sei proprio sicuro?

    Prova a lanciare queste due query, e posta qui il risultato,
    Prima quella con le funzioni nella ricerca
    Codice PHP:
    EXPLAIN SELECT table3.nomecampo,
    SUM(quantita) AS totale,
    SUM(opzione1*quantita) AS opzione1,
    SUM(opzione2*quantita) AS opzione2,
    SUM(opzione3*quantita) AS opzione3,
    SUM((opzion1*quantita)+(opzione2*quantita)+(opzione3*quantita)) AS totale_prezzo
    FROM table1 LEFT JOIN table3 USING 
    (productid)
    LEFT JOIN table2 USING (fieldid)
    WHERE table2.field='product_group' AND FROM_UNIXTIME(miadata'%Y') = $Year
    GROUP BY table3
    .nomecampo
    e poi quella che fa solo una ricerca per range.

    Codice PHP:
    EXPLAIN SELECT table3.nomecampo,
    SUM(quantita) AS totale,
    SUM(opzione1*quantita) AS opzione1,
    SUM(opzione2*quantita) AS opzione2,
    SUM(opzione3*quantita) AS opzione3,
    SUM((opzion1*quantita)+(opzione2*quantita)+(opzione3*quantita)) AS totale_prezzo
    FROM table1 LEFT JOIN table3 USING 
    (productid)
    LEFT JOIN table2 USING (fieldid)
    WHERE table2.field='product_group' AND 
    miadata >= 20070101 and miadata <= 20080101
    GROUP BY table3
    .nomecampo
    Ovviamente considero scontato che il campo miadata sia già indicizzato.
    Qualunque imbecille può inventare e imporre tasse. (Maffeo Pantaleoni)

  4. #14
    Originariamente inviato da webus
    .......
    ehmm

    miadata e' un valore unix timestamp e blekm vorrebbe ora il risultato diviso per mese.....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #15
    Originariamente inviato da piero.mac
    ehmm

    miadata e' un valore unix timestamp e blekm vorrebbe ora il risultato diviso per mese.....
    sì lo so ma non entro nel merito della funzione, voglio solo parlare della ottimizzazione di una ricerca, e parto dal principio che se una ricerca ha bisogno di una funzione su una colonna allora la struttura del database soffre di un serio difetto.
    Qualunque imbecille può inventare e imporre tasse. (Maffeo Pantaleoni)

  6. #16
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    Originariamente inviato da webus
    sì lo so ma non entro nel merito della funzione, voglio solo parlare della ottimizzazione di una ricerca, e parto dal principio che se una ricerca ha bisogno di una funzione su una colonna allora la struttura del database soffre di un serio difetto.
    il db in questione è un db di un famose e-commerce, e posso confermare che non è che sia il massimo, ecco..

    comunque, la soluzione suggerita da piero.mac mi ha aiutato, ed ho risolto
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  7. #17
    Originariamente inviato da webus
    sì lo so ma non entro nel merito della funzione, voglio solo parlare della ottimizzazione di una ricerca, e parto dal principio che se una ricerca ha bisogno di una funzione su una colonna allora la struttura del database soffre di un serio difetto.
    va be.... ma questo where non lavorerebbe senza la funzione. Quindi e' solo una affermazione teorica non applicabile in questo caso.

    codice:
    WHERE table2.field='product_group' AND
    miadata >= 20070101 and miadata <= 20080101

    miadata e' un unix timestamp e non una data in formato ISO

    any way... l'importante sia risolto il problema di blekm

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #18
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    Originariamente inviato da piero.mac
    any way... l'importante sia risolto il problema di blekm
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  9. #19
    Originariamente inviato da piero.mac
    va be.... ma questo where non lavorerebbe senza la funzione. Quindi e' solo una affermazione teorica non applicabile in questo caso.

    codice:
    WHERE table2.field='product_group' AND
    miadata >= 20070101 and miadata <= 20080101
    miadata e' un unix timestamp e non una data in formato ISO

    any way... l'importante sia risolto il problema di blekm
    Piero, torno a dire che non mi riferisco alla funzione suggerita né alla richiesta originale di blekm, ma alla sua domanda sul perché trovassi migliore la query originale rispetto a quella con la funzione YEAR().

    Comunque ho sbagliato io a introdurre nel thread un argomento che non era stato richiesto.
    Qualunque imbecille può inventare e imporre tasse. (Maffeo Pantaleoni)

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 © 2025 vBulletin Solutions, Inc. All rights reserved.