Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    select * + select count

    sto cercando di fare una query su un db in modo che mi vengano visualizzati i record relativi ad una data di nascita insieme al conteggio di quanti essi siano...
    Ho provato in questo modo:
    (selezioneleva è una variabile che viene inviata da un form...)

    SQL="SELECT id,data,nome,squadra,schema, count(data) as int_total FROM dati WHERE data = '"& selezioneleva &"' order by data desc "

    ma non funziona e ottengo questo errore:
    [Microsoft][ODBC Microsoft Access Driver] You tried to execute a query that does not include the specified expression 'id' as part of an aggregate function.
    /multi/wep_pro.asp, line 100

    aiuto!!

    Giorgius

  2. #2
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    591
    ciao

    intanto nella SQL la funzione Count(campo) as nomevar la puoi usare solo da sola...
    tipo --> select count(data) as int_total FROM dati WHERE data = '"& selezioneleva&"'" e non ci puoi fare il sort perche il risultato è un solo valore... mentre nella SQL che vuoi tu, i record sono piu di uno....e quindi cozza con il fatto di avere solo un count(data) record unico...
    Quindi la tua SQL ti consiglio di provarla dentro una query di access ...fai prima e prima la fai funzionare li e poi la metti nel file asp...
    ciao
    Vic53

  3. #3
    Sto impazzendo....
    alla fine ho messo in piedi questequery con subquery:

    SQL="SELECT (Select Count(*) AS totale from dati ), * from dati WHERE data = '"& selezioneleva &"'"

    dico quindi di scrivere totale:

    response.write rec("totale")

    Mi viene questo errore:
    ADODB.Recordset error '800a0cc1'
    Item cannot be found in the collection corresponding to the requested name or ordinal.

    ma perché?

    Giorgius

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    imola
    Messaggi
    47
    se devi contare il numeri di righe della tabella che soddisfano una
    certa condizione , prova:

    SELECT Count(*) AS totale from dati WHERE data = '"& selezioneleva &"'"


    ciao

  5. #5
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    591
    Perchè la sintassi che usi è sbagliata...
    ti avevoi suggerito di aprire la query in ACCESS ma vedo che non lo hai fatto
    prova con questa SQL ma comunque vada usa anche le query di ACCESS perche ti puoi esercitare sul campo...

    intanto il nunero dei record nel recordset si ottiene dal Recordset.recordCount che è un attributo del recordset estratto dal db.
    codice:
    DB="nome del tuo database..."
    Set conn  = Server.CreateObject("ADODB.Connection") 
    Set RS = Server.CreateObject("ADODB.Recordset")
    CurrentProject = "Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ="& Server.MapPath(DB)
    conn.Open CurrentProject
    SQL="select * from dati WHERE data = '"& selezioneleva &"'"
    RS.Open SQL, conn, 3, 3
    
    response.write "numero record estratti dal db: " &  RS.recordCount 
    
    do until RS.EOF 
     response.write "<br>ID=" & RS("ID")
     response.write ", data=" & RS("data")
     response.write ", nome=" & RS("nome")
     response.write ", squadra=" & RS("squadra")
     response.write ", schema=" & RS("schema")
     RS.movenext
    loop
    RS.Close
    conn.close
    set conn = nothing
    set RS = nothing
    ciao
    Ultima modifica di vic53; 17-10-2014 a 15:14
    Vic53

  6. #6
    SQL="SELECT (Select Count(*) AS totale from dati ) AS totale, * from dati WHERE data = '"& selezioneleva &"'"

  7. #7
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    591
    ciao Optime

    la differenza
    tra
    1) SQL="SELECT Select Count(*) AS totale from dati ) AS totale, * from dati WHERE data = '"& selezioneleva &"'"



    e
    2) SQL="SELECT Select * from dati WHERE data = '"& selezioneleva &"'"

    sta nel fatto che il contatore "Count(*) as totale" lo puoi avere dal n. di record estratti dal recordset

    cioe il campo "Recordset.RecordCount" che contiene esattamente il numero di record estratti dalla condizione....

    riferimenti...
    http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx


    ciao
    Ultima modifica di vic53; 19-10-2014 a 12:06
    Vic53

  8. #8
    .recordcount NON è affidabile come COUNT() - oltre ad essere più lento

  9. #9
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    591
    perchè dici che non è affidabile? Io l'ho usato spesso e non mi ha dato problemi ...
    una volta mi era successo che non era impostato ma era un errore di programma sulla open...
    La seconda cosa che volevo dire era questa
    la SQL "select Count(*) as Totale" riporta una sola ricorrenza,
    la SQL "Select * from dati" riporta da zero a N ricorrenze....
    DOMANDA: POSSONO COESISTERE in un solo RECORDSET?
    oppure prende errore la sql?

    ...
    Vic53

  10. #10
    Innanzitutto grazie a tutti per l'attenzione, le risposte e quindi l'aiuto che mi avete offerto...
    Grazie ai Vs suggerimenti sono giunto alla fine alla conclusione del problema..
    La stringa definitiva che mi permette di fare quello che volevo fare è questa:
    (la metto nel caso servisse a qualcuno...)

    SQL="SELECT (Select Count(*) from dati WHERE squadra = '"& selezionesqua &"') AS totale, * from dati WHERE squadra = '"& selezionesqua &"'"

    P.s.: ho provato ad utilizzare Recordcount ma mi dava un risultato di -1
    La stringa di cui sopra, come scritto, funziona perfettamente e da quello che vedo non rallenta l'esecusione della query.
    Di nuovo, quindi, grazie a tutti!!
    Giorgius

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.