Visualizzazione dei risultati da 1 a 10 su 12

Hybrid View

  1. #1
    se vuoi inserire in select un campo quando hai un group by, quel campo deve apparire con una funzione di aggregazione.

    In MS Access ci sono 2 funzioni molto utili e intuitive : FIRST() , LAST()

    in mysql non ci sono ma puoi comunque usare MAX(),MIN()

    Quindi, aggiungi il campo che vuoi , ma con la funzione di aggregazione MAX o MIN
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  2. #2
    Quote Originariamente inviata da bomberdini Visualizza il messaggio
    se vuoi inserire in select un campo quando hai un group by, quel campo deve apparire con una funzione di aggregazione.

    In MS Access ci sono 2 funzioni molto utili e intuitive : FIRST() , LAST()

    in mysql non ci sono ma puoi comunque usare MAX(),MIN()

    Quindi, aggiungi il campo che vuoi , ma con la funzione di aggregazione MAX o MIN
    Ciao bomberdini
    Se non ho capito male ho modificato la precedente query
    codice:
    SELECT gruppo, MAX( prezzo ) AS max_prezzo
    FROM sql_libri
    GROUP BY gruppo
    ORDER BY max_prezzo
    con questa
    codice:
    SELECT gruppo, MAX( Titolo ) AS Titolo, MAX( prezzo ) AS max_prezzo
    FROM sql_libri
    GROUP BY gruppo
    ORDER BY max_prezzo
    ma come c'è da aspettarsi i due MAX mi ritornano rispettivamente i MAX (alfabetico o numerico) del titolo e del prezzo, ma non me li allinaea.
    Con questa seconda query ottengo questo
    codice:
    gruppo         Titolo             max_prezzo
    scansoft     PhotoShow         230.00
    macromedia     Macromedia Spectra     240.00
    corel         KPT Vector Effects     260.00
    adobe         Adobe Photoshop 7.0     499.99
    curiouslabs     Poser 4 Pro         670.00
    La reale situazione è invece questa:
    Gruppo adobe:
    max_prezzo = 499.99
    titoli corrispondenti:
    Adobe Digital Video Collection
    Adobe GoLive/LiveMotion Pack

    Gruppo corel:
    max_prezzo = 260.00
    titoli corisponenti:
    CorelDRAW

    Gruppo macromedia:
    max_prezzo = 240.00
    titoli corisponenti:
    Macromedia Spectra

    ecc per le altre voci.

    Quindi non credo di dover cercare il MAX anche del titolo, ma un approccio diverso alla query.

    Come dicevo prima potrei anche cimentarmi con una WHERE ma non so come fare per allineare i valori massimi dei titoli coi titoli stessi.

    Con la prima Query che ho presentato riesco solo ad allineare il gruppo col massimo prezzo dei titoli.
    O forse non posso propio pretendere di visualizzare, oltre al gruppo, i soli Titoli che hanno il prezzo maggiore?

  3. #3
    Utente di HTML.it L'avatar di Enoa
    Registrato dal
    Jul 2005
    Messaggi
    573
    Il problema è che non sai ne puoi sapere quali saranno i valori assegnati alle altre colonne per ogni gruppo (gruppo creato dal group by).

    Vedi a questo link http://dev.mysql.com/doc/refman/5.7/...group-row.html , in pratica, da quello che ho capito, è quello che serve a te.



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.