Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 16 su 16
  1. #11
    Il group by serve a formare dei raggruppamenti di record a cui applicare una funzione ... di raggruppamento. Quindi costituisci un gruppo, e applichi su di esso COUNT, SUM, ecc...

    Se invece devi estrarre uno specifico record .. una delle due.. o conosci un dato univoco tipo l'id, oppure fai un ordinamento ed estrai il record ordinato limitando la ricerca con LIMIT.

    Si possono utilizzare altri sotterfugi ... tipo la costruzione di tabelle temporanee da popolare con dati specifici e poi fare un raggruppamento su di essi...

    Potrebbe anche funzionare, ma bisognerebbe avere la tabella sottomano per fare prove, la condizione HAVING... Prova:
    codice:
    SELECT * FROM prodotti 
    WHERE subcat = '1' 
    GROUP BY nome, priorita
    HAVING priorita = 1 
    ORDER BY nome DESC 
    
    oppure 
    
    SELECT * FROM prodotti 
    WHERE subcat = '1'
    AND priorita = '1' 
    GROUP BY nome, priorita
    ORDER BY nome DESC

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

  2. #12
    mia query
    SELECT * FROM prodotti WHERE subcat='1' GROUP BY nome ORDER BY nome, priorita DESC

    praticamente ho questo gruppo da cui devo estrarre SOLO il Primo record avente priorità maggiore
    Gruppo
    ID|nome|priorita
    _____________
    1 |aaa | 0
    2 |aaa | 0
    3 |aaa | 1
    4 |bbb | 0
    5 |bbb | 1
    6 |bbb | 0

    devo raggruppare per NOME e ordinare per PRIORITA DESC, NOME ASC per avere questo risultato:

    Risultato voluto
    ID|nome|priorita
    3 |aaa | 1
    5 |bbb | 1

    E invece la query mi ritorna questo
    Risultato ricevuto
    ID|nome|priorita
    _____________
    3 |aaa | 1
    6 |bbb | 0
    Occhiali da Sole www.OtticaGold.it
    Marche: Diesel, Dior, Emporio Armani, Gucci, Oakley, Oxydo, Police, Ray-Ban, Roberto Cavalli, Valentino, Vogue - Per le altre... cerca su google.it

  3. #13
    Ti ritorna il primo record che trova nel db....

    ma hai provato le query suggerite??? Se poi di di priorita' 1 ne hai una sola per nome, metti la condizione nel where...

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

  4. #14
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Su un'altro db tipo db2 farei cosi...

    SELECT * FROM prodotti F1 WHERE subcat='1' and priorita = (select max(priorita) from prodotti F2 where subcat = '1' and F1.nome = F2.nome)

    peccato che con la mia versione di mysql non lo possa fare.

  5. #15
    Originariamente inviato da piero.mac
    Ti ritorna il primo record che trova nel db....
    ma hai provato le query suggerite??? Se poi di di priorita' 1 ne hai una sola per nome, metti la condizione nel where...
    Quindi penso che sia proprio GROUP BY che non è molto usabile in questi casi vero?

    Originariamente inviato da badaze
    SELECT * FROM prodotti F1 WHERE subcat='1' and priorita = (select max(priorita) from prodotti F2 where subcat = '1' and F1.nome = F2.nome)
    Perfetta! Così il risultato è proprio come lo volevo grazie mille!

    (fortuna che fungono le subquery ehehe)
    Occhiali da Sole www.OtticaGold.it
    Marche: Diesel, Dior, Emporio Armani, Gucci, Oakley, Oxydo, Police, Ray-Ban, Roberto Cavalli, Valentino, Vogue - Per le altre... cerca su google.it

  6. #16
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Originariamente inviato da vla
    Quindi penso che sia proprio GROUP BY che non è molto usabile in questi casi vero?


    Perfetta! Così il risultato è proprio come lo volevo grazie mille!

    (fortuna che fungono le subquery ehehe)
    Forse dovrei aggiornare la mia versione di mysql.

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.