Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [mysql] ricavare punto vendita più performante

    Buongiorno,

    non riesco a trovare la strada giusta...

    ho la tabella sellout che contiene questi campi:

    id, id_sottoevento, codice, quantita, prezzo_unitario

    più altri campi che non servono al fine.

    Per trovare il prodotto più venduto ho fatto questa query:

    codice:
    SELECT
    sellout.codice_prodotto,
    SUM(sellout.quantita) as totale
    
    FROM sellout
    
    LEFT JOIN sottoeventi
    ON sellout.id_sottoevento=sottoeventi.id
    
    WHERE sottoeventi.id_evento=".$id_evento."
    
    AND sottoeventi.status=0
    
    GROUP BY sellout.codice_prodotto
    
    HAVING totale = (
                            SELECT
                            SUM(sellout.quantita) as t
    
                            FROM sellout
    
                            LEFT JOIN sottoeventi
                            ON sellout.id_sottoevento=sottoeventi.id
    
                            WHERE sottoeventi.id_evento=".$id_evento."
    
                            AND sottoeventi.status=0
    
                            GROUP BY sellout.codice_prodotto
    
                            ORDER BY t DESC
                            
                            LIMIT 1
                           )
    e sembrerebbe funzionare correttamente anche in caso più prodotti avessero lo stesso numero di vendite.

    Ora dovrei estrarre il sottoevento, quindi "id_sottoevento" che ha venduto di più in euro e quello che ha venduto di più in pezzi (desumo che trovata la quadra per una cosa, trovata anche per l'altra), tutti i valori sono nella tabella sellout, perchè abbiamo l'id del sottoevento, la quantità e il prezzo unitario, ho fatto un po' di prove, ma non ne esco, sapreste darmi una mano?

    Grazie
    SK

  2. #2
    non basta .... sum(quantita) ... group by id_sottoevento ... ?

  3. #3
    Originariamente inviato da optime
    non basta .... sum(quantita) ... group by id_sottoevento ... ?
    E mi sa che hai anche ragione

    Adesso faccio un po' di prove, spero sia ok

    Per il momento grazie mille

  4. #4
    Pensavo di aver risolto, invece ho un problema nuovo, la query per ricvare il pdv più performnte che ho prtorito è questa:

    codice:
    SELECT
    pdv.nome_negozio,
    SUM( sellout.prezzo_unitario * sellout.quantita ) as totale
    
    FROM sellout
    
    LEFT JOIN sottoeventi
    ON sellout.id_sottoevento_personale=sottoeventi.id
    
    LEFT JOIN pdv
    ON sottoeventi.id_pdv=pdv.id
    
    WHERE sottoeventi.id_evento=336
    
    AND sottoeventi.status=0
    
    AND sottoeventi.ab_est=1
    
    AND sellout.conferma=1
    
    GROUP BY sellout.id_sottoevento
    
    HAVING totale = (
                            SELECT
                            SUM( sellout.prezzo_unitario * sellout.quantita ) as t
    
                            FROM sellout
    
                            LEFT JOIN sottoeventi
                            ON sellout.id_sottoevento_personale=sottoeventi.id
    
                            WHERE sottoeventi.id_evento=336
    
                            AND sottoeventi.status=0
    
                            AND sottoeventi.ab_est=1
    
                            AND sellout.conferma=1
    
                            GROUP BY sellout.id_sottoevento
    
                            ORDER BY t DESC
    
                            LIMIT 1
                           )
    Sembrava funzionare, invece no

    Ho fatto dei test, se i pdv sono divresi, ovvero se per esempio ho 10 sottoeventi con 10 pdv diversi o anche con qualche pdv ripetuto, funziona, se invece tutti e 10 i sottoeventi hanno lo stesso pdv, non funziona più, ho provato allora a cambiare il GROUP BY con pdv.nome_negozio e funziona su quella con tutti i pdv uguali, ma non funziona più nell'altro caso, ho provato a mettere entrambe le clausole nel GROUP BY ma ovviamente non funziona più in entrambi i casi, sapreste darmi una mano?

    Grazie
    SK

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.