Visualizzazione dei risultati da 1 a 6 su 6

Discussione: group by e order by

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    23

    group by e order by

    Ciao raga non riesco a trovare la soluzione a questo enigma

    ho bisogno di raggruppare dei prodotti per barcode e ordinarli per prezzo ... ma non so proprio come fare

    mi ero imbattutto nella clausola GROUP BY bar_code ORDER BY price e dopo 3 ore documentandomi ho verificato che non possono coesistere con relazioni diverse... quindi cenrcando di inserire having... mi si è fuso il cervello perchè non so proprio come dire al db di raggruppare per barcode e ordinare per prezzo?

    SELECT * FROM listino GROUP BY bar_code ORDER BY price...

    es. ho tre prodotti con lo stesso barcode e con 3 prezi diversi..

    vorrei estrapolare un solo barcode con il prezzo più basso.

    mi aiutate please?

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    23
    mi rispondo da solo... e magari per chi ne avesse bisogno

    ho fatto una select nella select

    "SELECT listino.*
    FROM (SELECT * FROM listino ORDER BY price ASC) listino GROUP BY listino.bar_code"

  3. #3
    Secondo me, la tua soluzione non restituisce il risultato che hai chiesto nella domanda, io avrei fatto così:

    SELECT listino.barcode, Min(listino.price)
    FROM listino
    GROUP BY listino.barcode;

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    23
    Secondo me, la tua soluzione non restituisce il risultato che hai chiesto nella domanda, io avrei fatto così: SELECT listino.barcode, Min(listino.price) FROM listino GROUP BY listino.barcode;
    Ciao Dopo molti test ti confermo che con il tuo suggerimento ottengo un risultato errato
    ovvero mi estrae il prezzo più basso del barcode ma restituisce la posizione del barcode che ha il prezzo più alto!

    ti confermo che la soluzione da me trovata mi da il corretto funzionamento.!

    "SELECT listino.* FROM (SELECT * FROM listino ORDER BY price ASC) listino GROUP BY listino.bar_code"

  5. #5
    Ciao,
    confermo che la select indicata da valeriobb87 risponde alle indicazioni che hai dato nel primo post (prezzo più basso a parità di barcode):

    SELECT listino.barcode, Min(listino.price)
    FROM listino
    GROUP BY listino.barcode;

    ovviamente, se metti in campo altre variabili non indicate nel primo post
    la posizione del barcode che ha il prezzo più alto
    è ovvio che la risposta non va più bene... cos'è la posizione del barcode??

    Ciao
    Mik

  6. #6
    A parte che ha ragione Holidaysoft, la query che indichi non ha molto senso:

    SELECT listino.* FROM (SELECT * FROM listino ORDER BY price ASC) listino GROUP BY listino.bar_code

    1) non c'è nessuna garanzia che l'order by nella subquery venga rispettata, anzi probabilmente i risultati ti verranno restituiti ordinati per bar_code
    2) togliendo la ORDER BY, che ripeto non ha nessuno scopo, è come se invece della subquery ci fosse "listino"
    3) è sbagliato estrarre tutti i campi della tabella se c'è una group by, perché non sai da quale riga verranno letti (non lo sa nemmeno MySQL)
    STK/Unit: Unit Test framework per MariaDB
    http://stk.wikidot.com/stk-unit

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.