Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: group by che prende quantità errata

  1. #1

    group by che prende quantità errata

    gentile team,

    uso questa query per fare un group by in una query php e funziona ma n_venduti non è il più alto presente....ovvero raggruppa per store_ric
    ma avrei la necessità che prendesse il prodotto che ha n_venduti più alto della lista e maggiore di 100


    Codice PHP:
    $querytop=mysql_query("SELECT * FROM ricerche WHERE n_venduti>100 GROUP BY store_ric ORDER BY n_venduti DESC LIMIT 10 "); 



    avete suggerimenti?
    grazie mille
    L'intuizione creativa più di ogni altra cosa è l'unico elemento per cui la vita vale la pena di essere vissuta (D.W)

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    10,489
    Le query sono argomento Database.
    Nel tuo caso PHP la esegue e basta, ma non hai un problema di codice PHP.

  3. #3
    Quote Originariamente inviata da Stanislao Visualizza il messaggio
    gentile team,

    uso questa query per fare un group by in una query php e funziona ma n_venduti non è il più alto presente....ovvero raggruppa per store_ric
    ma avrei la necessità che prendesse il prodotto che ha n_venduti più alto della lista e maggiore di 100


    Codice PHP:
    $querytop=mysql_query("SELECT * FROM ricerche WHERE n_venduti>100 GROUP BY store_ric ORDER BY n_venduti DESC LIMIT 10 "); 



    avete suggerimenti?
    grazie mille
    Ciao, vedo che fai un GROUP BY ma non vi è alcuna funzione di aggregazione nel SELECT (count, sum, ecc...), n_venduti è un campo oppure un risultato di aggregazione?
    I database... la mia passione + o -

  4. #4
    Quote Originariamente inviata da power.mobile Visualizza il messaggio
    Ciao, vedo che fai un GROUP BY ma non vi è alcuna funzione di aggregazione nel SELECT (count, sum, ecc...), n_venduti è un campo oppure un risultato di aggregazione?
    n_venduti è un campo
    L'intuizione creativa più di ogni altra cosa è l'unico elemento per cui la vita vale la pena di essere vissuta (D.W)

  5. #5
    Intanto dovresti togliere il GROUP BY che non serve a niente, al massimo puoi inserire il campo store_ric in ORDER BY...
    I database... la mia passione + o -

  6. #6
    select store_ric, max(n_venduti) from table where n_venduti>100 group by store_ric;
    Sei un blogger? Mi serve il tuo aiuto per un innovativo servizio Win-Win tra te e le aziende! Per maggiori informazioni.

  7. #7
    nel ringraziare tutti, vi comunico quanto accade utilizzando questa query

    select store_ric, testo_ric, prezzo_ric, fatturato_sing, max(n_venduti) from tabella where n_venduti>100 group by store_ric order by max(n_venduti) DESC LIMIT 10"

    n_venduti è decrescente come dovrebbe e credo funzioni...
    ma testo_ric non coincide con la riga di n_venduti estratto

    in ogni caso ricapitolo l'esigenza

    ho una tabella che ha i seguenti campi

    store_ric | testo_ric | prezzo_ric | fatturato_sing | n_venduti

    e vorrei estrarre la top 10 dei prodotti che hanno n_venduti>100 prendendone solo uno per ogni singolo store_ric e quello che ha n_venduti più alto ( ogni store_ric può avere diversi record con n_venduti>100 )


    esempio contenuto tabella
    negozio1 | iphone 6 | 700 | 42000 | 120
    negozio1 | iphone 6 | 600 | 36000 | 111
    negozio1 | iphone 7 | 700 | 42000 | 179
    negozio2 | iphone 6 | 700 | 42000 | 120
    negozio2 | iphone 6 | 600 | 36000 | 111
    negozio3 | iphone 7 | 700 | 42000 | 152
    negozio3 | iphone 6 | 700 | 42000 | 123


    il risultato dovrebbe essere
    negozio1 | iphone 7 | 700 | 42000 | 179
    negozio2 | iphone 6 | 700 | 42000 | 120
    negozio3 | iphone 7 | 700 | 42000 | 152

    spero mi sia spiegato

    grazie cmq a tutti
    L'intuizione creativa più di ogni altra cosa è l'unico elemento per cui la vita vale la pena di essere vissuta (D.W)

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    4,870
    Non testato. Comunque l'idea c'è.

    Select a.store_ric, a.testo_ric, a.prezzo_ric, a.fatturato_sing, a.maxv
    from
    (select store_ric, testo_ric, prezzo_ric, fatturato_sing, max(n_venduti) as maxv)
    from tabella
    where n_venduti>100 group by store_ric) a
    inner join
    (Select store_ric, testo_ric, max(n_venduti) as maxv from tabella group by store_ric, testo_ric) b
    on a.store_ric = b.store_ric and a.testo_ric = b.testo_ric and a.maxv = b.maxv
    order by a.maxv desc limit 10
    Ultima modifica di badaze; 25-02-2017 a 13:37
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B

  9. #9
    intanto grazie...la nasa si diverte a confronto :O la facevo più semplice

    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in home.php on line 387

    L'intuizione creativa più di ogni altra cosa è l'unico elemento per cui la vita vale la pena di essere vissuta (D.W)

  10. #10
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Non testato. Comunque l'idea c'è.

    Select a.store_ric, a.testo_ric, a.prezzo_ric, a.fatturato_sing, a.maxv
    from
    (select store_ric, testo_ric, prezzo_ric, fatturato_sing, max(n_venduti) as maxv)
    from tabella
    where n_venduti>100 group by store_ric) a
    inner join
    (Select store_ric, testo_ric, max(n_venduti) as maxv from tabella group by store_ric, testo_ric) b
    on a.store_ric = b.store_ric and a.testo_ric = b.testo_ric and a.maxv = b.maxv
    order by a.maxv desc limit 10
    c'era solo una parentesi di troppo:

    "Select a.store_ric, a.testo_ric, a.prezzo_ric, a.fatturato_sing, a.maxv from (select store_ric, testo_ric, prezzo_ric, fatturato_sing, max(n_venduti) as maxv from ricerche where n_venduti>80 group by store_ric) a inner join (Select store_ric, testo_ric, max(n_venduti) as maxv from ricerche group by store_ric, testo_ric) b on a.store_ric = b.store_ric and a.testo_ric = b.testo_ric and a.maxv = b.maxv order by a.maxv desc limit 20")

    e ora allinea bene i contenuti delle righe ma salta i valori piu alti..
    per intenderci mi da un risultato

    N Titolo Venduti Prezzo sing Fatturato prod Store
    1 TELECOMANDO 147 € 13.99 € 2042.54 napoli
    2 MXQ 4K 135 € 28.50 € 3847.50 napoli
    3 TESTINE 120 € 4.99 € 598.80 caserta
    4 LAMPADINE 111 € 19.99 € 2218.89 salerno

    ma nel db sono presenti anche prodotti venduti = 230, 231... come mai parte da 147...?idee??
    Ultima modifica di Stanislao; 25-02-2017 a 16:37
    L'intuizione creativa più di ogni altra cosa è l'unico elemento per cui la vita vale la pena di essere vissuta (D.W)

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