- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- un group by che non va
-
un group by che non va
salve a tutti, ho questa tabella:
Link visite Miosito.asp?uId=Gianni&pag= 10 Miosito.asp?uId=Nick&pag=contatti 2 Miosito.asp?uId=Gianni&pag=contatti 1 Miosito.asp?uId=Franco&pag=contatti 5 Miosito.asp?uId=beppe 12 Miosito.asp?uId=gianni&pag=descrizione 3 Miosito.asp?uId=francy&pag=contatti 34 Miosito.asp?uId=Gianni 21 Miosito.asp?uId=Gianni&pag=contatti 1
dovrei creare una stampa che mi faccia uscire il nome utente con il totale delle visite.
Ho provato ad impostare la query sql in questo modo:sql = "Select SUM(visite) as totvis, link from tabUtenti where link LIKE '%uId%' GROUP BY link"
Ok, funziona, ma sorge un problema, mi raggruppa i link esatti! es per gianni, fa questo raggruppamento:
Miosito.asp?uId=Gianni&pag= 10 Miosito.asp?uId=Gianni&pag=contatti 2 Miosito.asp?uId=gianni&pag=descrizione 3 Miosito.asp?uId=Gianni 21 [code] invece il raggruppamento dovrebbe venire in questo modo: [code] Miosito.asp?uId=Gianni&pag= 36
purtroppo per quanto i links abbiano in comune la stringa uId=Gianni, non sono tutti gli stessi e per tale non li raggruppa.
Quello che mi chiedo io, si potrebbe fare un confronto generico, del tipo: "Raggruppa dove link sia uguale a %uId=Nome%
forse chiedo troppo:(
ps uso db accessgrazie, ciao
-
Ciao, in questo caso non puoi usare il group by ma devi usare la where, prendi i dati e poi da codice fai la somma delle varie righe.
-
Grazie per la risposta Cali, aspettavo proprio una tua risposta, visto che sei bravo a trovare soluzioni geniali
Cmq, non ho capito bene cosa mi hai spiegato, se potresti spiegarmi il procedimento passo-passo, te ne sarei grato.
Io ho usato la where nella query:
...where link LIKE '%uId%'...
questo per pulire il db da altri links che non centrano con gli utenti, ma poi dovrei procedere a fare la somma numerica per ogni utente.
-
Per ogni utente, fai la select senza group by e senza sum (ma con la where per prendere solo un user id). Quello restituirà un elenco del tipo:
Miosito.asp?uId=Gianni&pag= 10
Miosito.asp?uId=Gianni&pag=contatti 2
Miosito.asp?uId=gianni&pag=descrizione 3
Miosito.asp?uId=Gianni 21Per ogni riga, prendi il numero e lo sommi in una variabile, e quella è al somma che cercavi.
-
Ma la select utente per utente, come potrei farla???
io avevo pensato una cosa del genere:"Select link from tabUtenti where link LIKE '%uId%'" //pulisco il db arrUid = split(recordset("link"),"uId") // divido il link in 2 risultato: arrUid(0) = Miosito.asp? arrUid(1)= =Gianni&pag= 10 nUt = arrUid(1) // mi ricavo il n utente buttando la prima parte della stringa, risultato: Gianni&pag= 10 flg = split(arrUid(1),"&") //divido la stringa ricavata prima cosi prendo il nome utente pulito risultato: flg(0)=Gianni flg(1)1=pag= 10 flg1 = flg(0) // do while not recordset.eof "select visite, link from tabUtenti where link LIKE '"&flg1&"%' //seleziona tutti i links che contengono nome utente, la fine lasciala stare if instr(recordset("links"),flg1)<>0 then // se il prossimo recordset contiene lo stesso n utente procedi con la somma // ---------- fai la somma, ma non so come dovrei fare end if recordset.movenext loop
come puoi notare, il codice è molto confuso, e complicato, si potrebbe migliorare, il punto però è:
ho quasi 400 utenti, caricare la pagina potrebbe risultarmi macchinoso, non penso che il mio script potrebbe andare, tu avevi pensato qualcosa del genere, o magari hai qualcosa di più efficente e più semplice???Grazie, ciao.