Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    11

    MYSQL: group by con record che ha il numero maggiore di occorrenze

    Salve,
    ho questa tabella:
    id cai listino
    ------------
    1 1234 49.45
    2 1234 44.45
    3 1234 44.45
    4 2345 10.00
    5 2345 11.00
    6 2345 12.00
    7 2345 12.00

    devo recuperare da una tabella tutti i record raggrupati con il campo cai quindi:
    Select * from table GROUP BY cai
    ottengo:

    id cai listino
    ------------
    1 1234 49.45
    4 2345 10.00

    In realtà io vorrei ottenere il record con il listino che ha il numero maggiore di occorrenze e quindi:

    id cai listino
    ------------
    2 1234 44.45
    6 2345 12.00

    Idee? Grazie

  2. #2
    Una cosa così dovrebbe funzionare

    codice:
    SELECT A.cai, A.listino
    FROM (
             SELECT cai, listino, count(*) AS quanti
             FROM tabella 
             GROUP BY listino, cai 
            ) AS A 
                 left outer join
            (
             SELECT cai, listino, count(*) AS quanti
             FROM tabella 
             GROUP BY listino, cai 
             ) AS B on (A.cai = B.cai AND A.quanti < B.quanti)
    WHERE B.cai IS NULL;
    Per quanto riguarda l'id: ti serve? Se si, con quale criterio andrebbe scelto?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    11
    Grazie, ma non va bene, mi esclude i cai che hanno un solo record

  4. #4
    In che senso? Puoi fare un esempio? Perchè a me se alla tua tabella di esempio aggiungo un record con ad esempio cai 2222 e listino 30.00 viene fuori normalmenete

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    11
    ho risolto diversamente, cmq si nella mia tabella non mi restituiva i record unici, ma forse dipendeva dalle inner join con altre tabelle. Qui ho postato un esempio molto più semplice di quello che in realtà dovevo fare. Cmq grazie per la disponibilità

  6. #6
    facci sapere come hai risolto, magari può aiutare qualche altro forumista con lo stesso problema. grazie

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    11
    Integrando con php due query, nella prima raggruppo per cai, all'interno del ciclo un'altra query che mi restituisce il listino con maggior numero di occorenze

    es. semplificato
    SELECT * FROM tabella GROUP BY cai
    all'interno del ciclo:
    SELECT listino, COUNT(*) as c FROM tabella WHERE cai = '".$riga["cai"]."' GROUP BY listino ORDER BY c DESC LIMIT 1

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.