Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    1,309

    Una Select troppo difficile per me

    Salve ho un db con i seguenti campi:
    id | data | ora | referer | ip | unico

    Praticamente un contatore, sono tutti di tipo testo tranne il campo id, i dati contenuti sono di questo tipo:

    1 | 10/05/2004 | 10:15 | chiamata diretta | 1222 | true
    2 | 11/05/2004 | 10:15 | chiamata diretta | 1222 | true
    3 | 10/06/2004 | 10:15 | chiamata diretta | 1222 | true
    4 | 10/06/2004 | 10:20 | chiamata diretta | 1222 | true
    5 | 10/07/2004 | 10:15 | chiamata diretta | 1222 | true

    Mi servirebbe una select o parte di codice che mi estrae tutti i record con l'anno 2004 e fin qui è semplice:
    codice:
    strSql = "SELECT * FROM miaTab WHERE right(data,4)='2004' order by data, id"
    poi dovrei sapere quanti record nel mese di maggio, quanti nel mese di giugno e così via ho
    Maggio 10
    Giugno 15
    Luglio 30
    Mi potete aiutare??
    Ciao By Peter_Pan...

  2. #2
    mi sembra che quella query sia sbagliata
    per il resto devi fare 12 query o un'altra query che raggruppi per data e poi scorrere il recordset per farti le somme

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    1,309
    La query che ho postato funziona, il problema è posso mica fare 12 query una per ogni mese dell'anno?? Non c'è un sistema più rapido ed efficace
    Ciao By Peter_Pan...

  4. #4
    come funziona?! :master:
    che db è?!

  5. #5
    codice:
    <%
    set conn = ...
    conn.open ...
    
    for mese = 1 to 12
    m = mese
    if m < 9 then m = "0" & m
    sql = "SELECT count(*) FROM nome_tabella WHERE month(campo_data) = m AND year(campo_data) = 2004"
    set rs = conn.execute(sql)
    response.write monthName(mese) & " " & rs(0) & "</br>"
    rs.close
    set rs = nothing
    next
    
    conn.close
    set conn = nothing
    %>

  6. #6
    Originariamente inviato da Mems
    codice:
    <%
    set conn = ...
    conn.open ...
    
    for mese = 1 to 12
    m = mese
    if m < 9 then m = "0" & m
    sql = "SELECT count(*) FROM nome_tabella WHERE month(campo_data) = m AND year(campo_data) = 2004"
    set rs = conn.execute(sql)
    response.write monthName(mese) & " " & rs(0) & "</br>"
    rs.close
    set rs = nothing
    next
    
    conn.close
    set conn = nothing
    %>

    comunque dovrebbe essere più veloce la seconda soluzione che ho messo...
    ad esempio con 100000 record nel db devi fare 100000*12 controlli
    con un query che raggruppa per data (con count) fai 100000 controlli e poi scorri un db con (max 365 record) per fare le somme...
    da provare

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    1,309
    Il db è access, io forse ho un'altra soluzione ma non so se può andare, utilizzo la query che vi ho postato, funziona, mi estrae solo i record che hanno del campo data(che è un campo testo) il 2004, poi faccio un do while per scorrere tutti i record estratti e nel do while inserisco un select case con un arrey, forse faccio prima a postare il codice:
    codice:
    Do while not objRs.EOF
    		select case mid(objRs("data"),4,2)
    			case "01"
    				strA=strA+1
    			case "02"
    				strB=strB+1
    			case "03"
    				strC=strC+1
    			case "04"
    				strD=strD+1
    			case "05"
    				strE=strE+1
    			case "06"
    				strF=strF+1
    			case "07"
    				strG=strG+1
    			case "08"
    				strH=strH+1
    			case "09"
    				strI=strI+1
    			case "10"
    				strL=strL+1
    			case "11"
    				strM=strM+1
    			case "12"
    				strN=strN+1
    			case else
    				msgbox("errore")
    		end Select
    	objRs.MoveNext
    	Loop
    In questo caso ho usato dodici variabili ma posso anche usare un array.
    Secondo voi può andare??
    Ora provo se funziona poi vi faccio sapere.
    Ciao By Peter_Pan...

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    1,309
    ok Funziona, secondo voi può essere una valida alternatica?? Almeno estraggo i dati e li scorro solo una volta
    Ciao By Peter_Pan...

  9. #9
    in asp msgbox nun c'è.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    1,309
    si apparte la msgbox che sostituisco con response.write("errore") questo codice può andare:

    codice:
    Do while not objRs.EOF
    		select case mid(objRs("data"),4,2)
    			case "01"
    				strA(1)=strA(1)+1
    			case "02"
    				strA(2)=strA(2)+1
    			case "03"
    				strA(3)=strA(3)+1
    			case "04"
    				strA(4)=strA(4)+1
    			case "05"
    				strA(5)=strA(5)+1
    			case "06"
    				strA(6)=strA(6)+1
    			case "07"
    				strA(7)=strA(7)+1
    			case "08"
    				strA(8)=strA(8)+1
    			case "09"
    				strA(9)=strA(9)+1
    			case "10"
    				strA(10)=strA(10)+1
    			case "11"
    				strA(11)=strA(11)+1
    			case "12"
    				strA(12)=strA(12)+1
    			case else
    				Response.Write("errore")
    		end Select
    	objRs.MoveNext
    	Loop
    Ciao By Peter_Pan...

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.