|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
|
asp conteggio dati...
ragazzi ho un problema...
ho un database nella quale dovrei contare tutti i dati che si ripetono in una stessa colonna e andare a stampare quanti sono... mi spiego meglio sto creando un forum e ho una tabella nella quale vengono inserite le risposte. Ho creato una colonna chiamata IDTopic nella quale inserisco l'id del topic a cui si riferisce la risposta ora io avrei bisogno di contare quanti IDtopic uguali ci sono e andare a stampare il numero.Ad esempio se ho 4 risposte con idtopic 1 vado a stampare 4 di fianco al titolo del messaggio se ho 7 risposte con idtopic 10 vado a stampare 7 nel di fianco al messaggio con idtopic 10 io l'ho fatto così solo che mi stampa solo il numero di risposte del primo messaggio Codice:
dim controllo
dim contatore
contatore = 0
controllo = objrecordset.Fields("IdTopic")
do while Not objRecordset.EOF
if objrecordset.Fields("IdTopic") = controllo then
contatore = contatore + 1
'response.Write(contatore)
end if
objRecordset.MoveNext
loop
response.Write(contatore)
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Scusa...non puoi fare con SQL ?
"SELECT count(*) As conteggio from tabella WHERE IdTopic = " & controllo & ";" objRecordset("conteggio") contiene il numero di messaggi di quel topic... |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
La cosa corretta è quella di cionci....la tua è un processo macchinoso e lento e soprattutto esegui un ciclo che tiene occupato il processore èer molto tempo quando crai una tabella con molti dati.
Quando hai a che fare con un database tutti i calcoli se puoi farli con il linguaggio SQL è motlo ma molto meglio! |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
|
Quote:
|
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Allora prova a fare cosi:
SELECT IdTopic , Count(*) as ciao FROM Tua_Tabella GROUP BY IdTopic ORDER BY IdTopic |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
|
Quote:
Codice:
Set objRecordset = objConnessione.Execute("SELECT IdTopic , Count(*) as Conteggio FROM Risposte GROUP BY IdTopic ORDER BY IdTopic")
response.Write(objRecordset("conteggio"))
|
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Mi sembra ovvio che nn la stampi tutta, il recordset si fissa sul primo record (se esiste)....
fai cosi: Set objRecordset = objConnessione.Execute("SELECT IdTopic , Count(*) as Conteggio FROM Risposte GROUP BY IdTopic ORDER BY IdTopic") while not objRecordset.EOF response.write objRecordset("IdTopic") & " ... " & objRecordset("Conteggio") & "<br>" objRecordset.movenext wend |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
|
Quote:
ciao! |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
di nulla
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
|
però ho un problema...allora...
tramite un do while Not objRecordset.EOF vado a stampare la tabella e i titoli di ogni topic....però non so come fare ad andare a stampare anche il contatore,visto che serve un altro while non penso si possano fare 2 while uno dentro l'altro... come posso risolvere?? |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Lo fai in una query sola, fai una SELECT multipla, in questa maniera...guarda per esempio la mia:
SELECT ArcNews.IDNews, TabTipiNews.TipoNews, ArcNews.IDMembro, TabMembri.Nick, TabMembri.Trasferito, ArcNews.Data, ArcNews.Titolo, ArcNews.Testo, (SELECT COUNT(*) FROM ArcNewsReply WHERE ArcNewsReply.IDNews=ArcNews.IDNews) AS NumReply FROM TabTipiNews INNER JOIN (TabMembri INNER JOIN ArcNews ON TabMembri.IDMembro = ArcNews.IDMembro) ON TabTipiNews.IDTipoNews = ArcNews.IDTipoNews ORDER BY ArcNews.Data DESC Se qlc nn ti chiaro te lo rispiego |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
|
non mi è chiarissimo....io ho fatto così
Set objRecordset = objConnessione.Execute("SELECT *,(SELECT IdTopic , Count(*) as Conteggio FROM Risposte GROUP BY IdTopic ORDER BY IdTopic) FROM NuovoMessaggio") però mi da un errore... |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Probabilemte ti dirà ch la funzione fa parte di un aggregazione...cmq quello che vedi da me è la stampa delle news ed in più c'è anche il numero di reply fatti....
non è difficile, inanzitutto devi scrivere nella SELECT i nomi che ti interesano e non un *, poi in nella SELECT annidata metti cosa del genere: SELECT COUNT(*) FROM ArcNewsReply WHERE ArcNewsReply.IDNews=ArcNews.IDNews) AS NumReply, dove se noti c'è una where che va a puntare ad ogni singolo record e poi va a contare tutte le risponse di quella news....non è facile da immaginare, pensa che una Query viene formata a righe, per cui quando tu gli dai in pasto una stringa esecutiva, lui comincia a fare un elenco, bene, qui prende tutto quello che ti interessa e poi fai la seconda Select che andarà a fare una where proprio nella riga che ti interessa a te andando a contare i reply.... Prova a crearne una tu, se nn ce la fai passami il database che te la creo io...cosi la prossima volta sai come fare! ciaoooooooooooooooooo |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
SELECT Risposte.IdTopic, TitoloTopic, count(*)
FROM Risposte INNER JOIN NuovoMessaggio GROUP BY Risposte.IDTopic, TitoloTopic; |
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
|
Quote:
|
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
E sa fai una cosa del genere:
Set objRecordset = objConnessione.Execute("SELECT CAMPI_CHE_TI_INTERESSANO, (SELECT COUNT(*) FROM Risposte WHERE Risposte.IDTopic=Topic.IDTopic) as Conteggio FROM Topic") |
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
|
Quote:
|
|
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
SELECT Risposte.IdTopic, TitoloTopic, count(*) FROM Risposte INNER JOIN NuovoMessaggio ON Risposte.IDTopic = NuovoMessaggio.IDTopic GROUP BY Risposte.IDTopic, TitoloTopic; |
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
|
ho modificato la query così SELECT IDmessaggio,TitoloMessaggio,AutoreMessaggio,DataMessaggio,(SELECT Risposte.IdTopic, count(*) as conteggio FROM Risposte INNER JOIN NuovoMessaggio ON Risposte.IDTopic = NuovoMessaggio.IDMessaggio GROUP BY Risposte.IDTopic) FROM NuovoMessaggio "
ma mi da questo errore... È stata scritta una sottoquery che può restituire più campi senza utilizzare la parola riservata EXISTS nella proposizione FROM della query principale. Modificare l'istruzione SELECT nella sottoquery per richiedere soltanto un campo. ufff ce la farò??! |
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
SELECT IDmessaggio, TitoloMessaggio, AutoreMessaggio, DataMessaggio, count(*) FROM Risposte INNER JOIN NuovoMessaggio ON Risposte.IDTopic = NuovoMessaggio.IDMessaggio GROUP BY IDmessaggio, TitoloMessaggio, AutoreMessaggio, DataMessaggio; |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:18.



















