Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125

    Contare nomi in tabella mysql

    Ciao, se ho una tabella in mysql come quella dell'img allegata, come faccio a contare quante volte sono stati scritti i nomi Pippo Pasticcio, Vittorio Giasso e Luigi Proietti?

    Cioè riuscire ad avere:

    Pippo Pasticcio 6 volte;
    Vittorio Giasso 3 volte;
    Luigi Proietti 3 volte

    Grazie
    Immagini allegate Immagini allegate

  2. #2
    Utente di HTML.it L'avatar di 99eros9
    Registrato dal
    Jan 2003
    Messaggi
    2,637
    Usi Count() e Group By.
    Tala är silver men tiga är guld!
    Pubblica il tuo curriculum
    Segnala il tuo sito
    Ancl

  3. #3
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Originariamente inviato da 99eros9
    Usi Count() e Group By.
    Un esempio per favore?

  4. #4
    Utente di HTML.it L'avatar di 99eros9
    Registrato dal
    Jan 2003
    Messaggi
    2,637
    Mi viene in mente uno scassone del genere
    codice:
    SELECT preferenzauno,  count(preferenzauno)
    FROM test
    GROUP BY preferenzauno
    UNION
    SELECT  preferenzadue, count(preferenzadue)
    FROM test
    GROUP BY preferenzadue
    UNION SELECT  preferenzatre, count(preferenzatre)
    FROM test
    GROUP BY preferenzatre;
    In base al valore preferenzauno che racchiuderà anche tutte le altre ti fai i conti in un ciclo condizionale. Al momento non mi viene in mente altro visto che COUNT è una funzione di colonna e alcune funzionalità implementabili dipendo anche dalla versione del server mysql... nel caso di una versione superiore alla 4.1x prova ad implementare con l'uso di subquery e sommare i risultanti.
    Tala är silver men tiga är guld!
    Pubblica il tuo curriculum
    Segnala il tuo sito
    Ancl

  5. #5
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Grazie.

    Ho scritto così:

    codice:
    <%
    
    SQL = "SELECT preferenzauno, count(preferenzauno) AS pref "
    SQL = SQL & " FROM tbl_vota "
    SQL = SQL & " GROUP BY preferenzauno "
    SQL = SQL & " UNION "
    SQL = SQL & " SELECT preferenzadue, count(preferenzadue) "
    SQL = SQL & " FROM tbl_vota "
    SQL = SQL & " GROUP BY preferenzadue "
    SQL = SQL & " UNION SELECT preferenzatre, count(preferenzatre) "
    SQL = SQL & " FROM tbl_vota " 
    SQL = SQL & " GROUP BY preferenzatre "
    
    Set objRS = Server.CreateObject("ADODB.Recordset")
    objRS.Open SQL, objconn
    
    if objRS.eof then
       response.write "ko"
       
    else
    
    while not objRS.eof 
    
    response.write objRS("preferenzauno") &"-"& objRS("pref") &"
    "
    
    objRS.movenext
    wend
     
    end if
     
    objRS.Close
    Set objRS = Nothing
    objConn.Close
    Set objConn = Nothing
    
    %>
    Quello che viene restituito è :

    codice:
    Pippo Pasticcio-1
    Vittorio Giasso-3
    Pippo Pasticcio-4
    Luigi Proietti-3
    Pippo Pasticcio-1
    Non capisco... come faccio ad avere ?:

    codice:
    Pippo Pasticcio-6
    Vittorio Giasso-3
    Luigi Proietti-3

  6. #6
    Utente di HTML.it L'avatar di 99eros9
    Registrato dal
    Jan 2003
    Messaggi
    2,637
    Devi fare riferimento anche alla seconda colonna. Dai un alias tipo Count(nomeCampo) AS NumOccorrenze e poi stampale a video. Una cosa che posso consigliarti, anche se non mi convince il modo in cui hai strutturato la base dati è che ogni utente dovrebbe avere un suo identificativo univoco, ad esempio in una tabella esterna relazionata, in modo che quando fai la query puoi ordinarli in base a quel valore ed operarci sopra attraverso una iterazione condizionale.
    Tala är silver men tiga är guld!
    Pubblica il tuo curriculum
    Segnala il tuo sito
    Ancl

  7. #7
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Originariamente inviato da 99eros9
    Devi fare riferimento anche alla seconda colonna. Dai un alias tipo Count(nomeCampo) AS NumOccorrenze e poi stampale a video. Una cosa che posso consigliarti, anche se non mi convince il modo in cui hai strutturato la base dati è che ogni utente dovrebbe avere un suo identificativo univoco, ad esempio in una tabella esterna relazionata, in modo che quando fai la query puoi ordinarli in base a quel valore ed operarci sopra attraverso una iterazione condizionale.
    Scusa ma non ti seguo...

  8. #8
    Utente di HTML.it L'avatar di 99eros9
    Registrato dal
    Jan 2003
    Messaggi
    2,637
    Me lo hai datto dopo che hai modificato la risposta precedente.
    Cos'è che non hai capito? Si tratta di sapere un po di SQL e come normalizzare una base dati... io una soluzione te l'ho data, per fare il totale su tre colonne nella stessa tabella, al momento non mi viene una soluzione diversa con mysql, quindi ti devi aiutare via codice.
    Il resultset va ordinato, i risultati vanno calcolati ed inseriti in un Array e quindi stampati.
    Tala är silver men tiga är guld!
    Pubblica il tuo curriculum
    Segnala il tuo sito
    Ancl

  9. #9
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Originariamente inviato da 99eros9
    Il resultset va ordinato, i risultati vanno calcolati ed inseriti in un Array e quindi stampati.
    E' questo che non ho capito.

    Poi ho modificato la query in questo modo:

    codice:
    SQL = "SELECT preferenzauno, count(preferenzauno) AS pref "
    SQL = SQL & " FROM tbl_vota "
    SQL = SQL & " GROUP BY preferenzauno "
    SQL = SQL & " UNION "
    SQL = SQL & " SELECT preferenzadue, count(preferenzadue) AS pref2"
    SQL = SQL & " FROM tbl_vota "
    SQL = SQL & " GROUP BY preferenzadue "
    SQL = SQL & " UNION SELECT preferenzatre, count(preferenzatre) "
    SQL = SQL & " FROM tbl_vota " 
    SQL = SQL & " GROUP BY preferenzatre "
    Ma restituisce errore quando provo a stampare pref2:

    Tipo di errore:
    ADODB.Recordset (0x800A0CC1)
    Impossibile trovare l'oggetto nell'insieme corrispondente al nome o al numero richiesto.

  10. #10
    Utente di HTML.it L'avatar di 99eros9
    Registrato dal
    Jan 2003
    Messaggi
    2,637
    basta richiamare pref, in realtà stai creando una tabella con 2 colonne... così funziona union
    Tala är silver men tiga är guld!
    Pubblica il tuo curriculum
    Segnala il tuo sito
    Ancl

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.