Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505

    MySql - Ritornare count più un altro valore

    Salve. Ho una tabella del tipo

    codice:
        id  user    value
        0   aaa     11
        1   bbb     11
        2   ccc     33
        3   aaa     22
        4   ccc     44
        5   ddd     11
        6   eee     22
        7   rrr     33
        8   aaa     33
        9   iii     11
    Io vorrei una query che mi ritorna (in base al valore di value e all'utente) il numero (quindi count) di occorrenze con quel value e, se presente, il nickname con quel id.

    Esempio : se value=11 e username=aaa deve tornarmi 4 (numero di value 11 nella tabella) più qualcosa tipo "si" (c'è un user aaa con value 11).
    Viceversa, se value=33 e username=bbb deve tornarmi 3 (numero di volte con 33) e no (non c'è un user bbb con value 33). E' possibile con una singola query al DB?

    Saluti

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    select 
    sum(value=11) as quanti,(select if(sum(value=11 and user = 'aaa'),'si','no') 
    from tabella) as presente
    from tabella

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    grazie mille! Come sempre gentilissimo!!!

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    quello che trovo strano è che nelle guide basilari di MySql l'operatore di aggregazione SUM è visto solo come "somma di valori" per determinati campi. Invece se usato come lo fai te (con una pseudo clausola where all'interno) è potente : è queasi come un where+count assieme.

    O almeno, spero di aver capito bene

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Hai capito bene. Una clausola come "value=11" restituisce 1 nel caso vi sia corrispondenza e 0 in caso contrario. Quindi è sufficiente fare la somma dei risultati di tale confronto e in questo modo puoi fare conteggi su criteri differenti all'interno della stessa query. Spero di aver reso l'idea.

    edit. Qui trovi un esempio simile

    http://forum.html.it/forum/showthrea...readid=1436728

    per la creazione di una tabella pivot suddividendo i totali mensilmente.

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.