Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2002
    residenza
    Rovigo
    Messaggi
    11

    Conteggio record su piu' tabelle

    Salve a tutti
    Io sto cercando di risolvere un problema legato al conteggio di valori su piu' campi di una tabella.
    In una tabella X ho i campi gruppo1, gruppo2, gruppo3 (campi testo)
    In ogni campo gruppo1,2 e 3 l'utente puo' inserire tre preferenze selezionandole da un menu' specifico che contiene una ventina di voci.
    quello che vorrei fare è un conteggio complessivo delle preferenze scelte dagli utenti.
    Il problema che, per mia ignoranza non riesco a superare è la somma dei medesimi valori su tre campi.

    Su un campo ho risolto con questa query
    strSQL = "select preferenza, COUNT(preferenza) AS totalerecord FROM TBL_utenti Group BY preferenza order by preferenza"

    quindi ottengo la lista con il numero complessivo delle preferenze, es:
    pizza 21
    carne 45
    pesce 70
    frutta 73
    etc etc

    ho provato con le union ma continuo a ricere messaggi di errore tipo "il server non supporta..."

    come posso fare per avere il numero totale di ogni preferenza sommandole da tre campi? grazie

  2. #2
    1. con quale db lavori?
    2. fa' un esempio (tipo: ho questa tabella, questi sono i valori presenti, questo è il risultato che vorrei avere)

    grassie

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2002
    residenza
    Rovigo
    Messaggi
    11
    Quote Originariamente inviata da optime Visualizza il messaggio
    1. con quale db lavori?
    2. fa' un esempio (tipo: ho questa tabella, questi sono i valori presenti, questo è il risultato che vorrei avere)

    grassie
    Cerco di spiegarmi meglio (e ti ringrazio per la risposta)
    ho la tabella TBL_soggetto (su database access) nella quale, tra i vari campi, ci sono tre campi (testo) denominato gruppo1, gruppo2 e gruppo 3.
    In questi campi ogni utente inserisce dei valori da una select
    esempio
    nel campo "gruppo1" sceglie un valore tra:
    PANE
    PASTE
    PIZZA
    OLIO
    LATTE
    FARINA

    nel campo "gruppo2" sceglie una seconda volta un'altro valore o il medesimo scelto in precedenza
    PANE
    PASTA
    PIZZA
    OLIO
    LATTE
    FARINA ETC

    nel campo "gruppo3" sceglie per la terza volta un valore o uno di quelli scelti in precedenza
    PANE
    PASTA
    PIZZA
    OLIO
    LATTE
    FARINA etc.

    quando piu' utenti avranno effettuato le proprie scelte
    la tabella TBL_soggetti sarà così composta:

    ID gruppo1 - gruppo2 - gruppo 3
    1 PANE PIZZA PASTA
    2 OLIO PIZZA FARINA
    3 PIZZA OLIO PANE
    4 PIZZA PANE LATTE
    etc


    a questo punto io vorrei contare le preferenze distinguendole per ottenere:
    PIZZA 4
    PANE 3
    OLIO 2
    PASTA 1
    FARINA 1
    LATTE 1
    Ultima modifica di pmax; 18-01-2016 a 13:47 Motivo: database

  4. #4
    SELECT SCELTA, SUM(TOT) AS TOT FROM (
    SELECT scelta1 AS SCELTA, COUNT(*) AS TOT FROM tabella GROUP BY scelta1
    UNION ALL
    SELECT scelta2 AS SCELTA, COUNT(*) AS TOT FROM tabella GROUP BY scelta2
    UNION ALL
    SELECT scelta3 AS SCELTA, COUNT(*) AS TOT FROM tabella GROUP BY scelta3
    ) AS TX GROUP BY SCELTA ORDER BY 1

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2002
    residenza
    Rovigo
    Messaggi
    11
    Quote Originariamente inviata da optime Visualizza il messaggio
    SELECT SCELTA, SUM(TOT) AS TOT FROM (
    SELECT scelta1 AS SCELTA, COUNT(*) AS TOT FROM tabella GROUP BY scelta1
    UNION ALL
    SELECT scelta2 AS SCELTA, COUNT(*) AS TOT FROM tabella GROUP BY scelta2
    UNION ALL
    SELECT scelta3 AS SCELTA, COUNT(*) AS TOT FROM tabella GROUP BY scelta3
    ) AS TX GROUP BY SCELTA ORDER BY 1


    Grazie mille provo e ti faccio sapere

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2002
    residenza
    Rovigo
    Messaggi
    11
    Dunque il codice va alla grande ma conteggia anche i valori nulli.
    Quindi conteggia anche i campi vuoti dovuti alle "non scelte" dell'utente.
    Ho pensato di modificare il codice di optime aggiungendo l' esclusione dal conteggio dei valori nulli ma qualcosa non torna.

    Le modifiche restituiscono i valori richiesti (conteggio) per ogni voce scelta ma l'esclusione non sembra funzionare a dovere.
    Dove sbaglio?

    <%
    Dim rs, strSQL, strConn
    strSQL = "SELECT SCELTA, SUM(TOT) AS TOT FROM (
    SELECT gruppo1 AS SCELTA, COUNT(*) AS TOT FROM TBL_soggetto where gruppo1 is not null GROUP BY gruppo1
    UNION ALL
    SELECT gruppo2 AS SCELTA, COUNT(*) AS TOT FROM TBL_soggetto where gruppo2 is not null GROUP BY gruppo2
    UNION ALL
    SELECT gruppo3 AS SCELTA, COUNT(*) AS TOT FROM TBL_soggetto where gruppo3 is not null GROUP BY gruppo3)
    AS TX GROUP BY SCELTA"
    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("/mdb-database/database.mdb")&";Persist Security Info=False"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open strSQL, strConn%>
    <%
    Do WHILE NOT rs.EOF
    %>
    <body topmargin="0" leftmargin="0">

    <b><span style="text-decoration: none">
    </span>
    </b>
    <h4 align="left" style="margin-top: 0; margin-bottom: 0">
    <font face="Verdana">
    <span style="font-weight: 400">
    <%=rs("scelta")%></span> - <%=rs("tot")%> </font></h4>

    <%
    rs.MoveNext()
    Loop
    rs.Close
    %></table>

  7. #7
    prova con

    SELECT gruppo1 AS SCELTA, COUNT(gruppo1) ....

    quindi espliciti la colonna da conteggiare al posto di * . Fallo per tutte le colonne

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2002
    residenza
    Rovigo
    Messaggi
    11
    Quote Originariamente inviata da optime Visualizza il messaggio
    prova con

    SELECT gruppo1 AS SCELTA, COUNT(gruppo1) ....

    quindi espliciti la colonna da conteggiare al posto di * . Fallo per tutte le colonne
    Ho provato così ma in cima spunta sempre la somma di campi vuoti ma non riesco a capire di quale somma si tratta. Il numero restituito non è la somma dei 3 campi vuoti ne la somma di uno dei tre.

    strSQL = "SELECT SCELTA, SUM(TOT) AS TOT FROM (
    SELECT gruppo1 AS SCELTA, COUNT(gruppo1) AS TOT FROM TBL_soggetto where gruppo1 is not null GROUP BY gruppo1
    UNION ALL
    SELECT gruppo2 AS SCELTA, COUNT(gruppo2) AS TOT FROM TBL_soggetto where gruppo2 is not null GROUP BY gruppo2
    UNION ALL
    SELECT gruppo3 AS SCELTA, COUNT(gruppo3) AS TOT FROM TBL_soggetto where gruppo3 is not null GROUP BY gruppo3)
    AS TX GROUP BY SCELTA"
    Ultima modifica di pmax; 19-01-2016 a 11:07

  9. #9
    che vuol dire "in cima spunta sempre la somma dei campi vuoti"?

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2002
    residenza
    Rovigo
    Messaggi
    11
    Vuol dire che senza is not null
    avevo

    -63 (somma dei campi vuoti del gruppo1 e 2)
    -48 (somma dei campi vuoti del gruppo3)
    LATTE 2
    PIZZA 14
    PANE 5
    ETC

    Con l'inserimento di IS NOT NULL
    ho
    48 (somma dei campi vuoti del gruppo3)
    LATTE 2
    PIZZA 14
    PANE 5
    ETC

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.