23. marts 2004 - 16:26Der er
28 kommentarer og 1 løsning
Forum med brug af COUNT til at tælle besvarelser
jeg har et forum, hvor jeg gerne ville tælle svarene på hver enkelt besked. Min kode ser sådan ud:
'Åben en forbindelse til databasen set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open(Server.Mappath("db.mdb"))
'opretter forbindelse til database og vælger poster der ikke er Svar set forum = Server.CreateObject("ADODB.recordset") forum.Open "SELECT * FROM job WHERE svarid = 0 ORDER BY Dato desc", conn
jeg vil gerne have klemt en COUNT ind, men kan ikke rigtig få det til at virke?
Noget lignende: forum.Open "SELECT COUNT * FROM job WHERE svarid = 0 ORDER BY Dato desc", conn (der mangler en operator får jeg at vide??)
"SELECT count(*) as total, id, dato.....(alle dem du skal bruge) FROM job WHERE svarid = 0 group by id, dato....(alle dem du skal bruge) ORDER BY Dato desc"
"SELECT count(*) as beskedid, svarid, Overskrift, Tekst, username, dato FROM job WHERE svarid = 0 group by beskedid, svarid, Overskrift, Tekst, username, dato ORDER BY Dato desc"
alle svar giver kun antallet 1 og alle beskedid'er (på links til beskeden) bliver sat til 1 også???
Du skal havde JOIN'et svar tabellen på sådan alle svar bliver JOIN'et på tråden.:
"SELECT count(*) as antal, job.svarid, job.Overskrift, job.Tekst, job.username, job.dato FROM job LEFT JOIN job j2 ON job.id = j2.svarid WHERE job.svarid = 0 group by job.svarid, job.Overskrift, job.Tekst, job.username, job.dato ORDER BY job.Dato desc"
ok, den jeg har vist forudsætter alle svar også ligger i job tabellen :) Det har jeg antager som du har vist din SQL med svarid=0 ligner hoved beskeden og så alle svar har svarid=id på den man svarede på.
Så jeg antog du brugte kolonnen svarid og hvis den er 0 så det en hovedtråd er den forskellig fra 0 indeholder den ID'et på den hovedtråd den er et svar til?
Jeg har dog stadig et problem - Antal svar giver 1 selvom der ingen svar er. Først når der er 2 svar tæller den 2. Kunne du hjælpe mig med det også, så smider jeg lidt mere i hatten?
Prøv at lave count(*) as antal om til at den tæller id i "svar" tabellen:
count(j2.id) as antal
Så den bliver:
"SELECT count(j2.id) as antal, job.svarid, job.Overskrift, job.Tekst, job.username, job.dato FROM job LEFT JOIN job j2 ON job.id = j2.svarid WHERE job.svarid = 0 group by job.svarid, job.Overskrift, job.Tekst, job.username, job.dato ORDER BY job.Dato desc"
Jeg får dog en fejl på min "vis_indslag.asp" side når jeg vil vise beskeder der ikke har fået et svar tilknyttet. Da der ikke er nogen poster at vise vel?
Du skal hvade flytte WHILE NOT forum.EOF op i linje med do
Så det bliver:
do WHILE NOT forum.EOF
.. .. loop
eller kommer den fejl når der ikke er nogle svar. Da do ... loop while xxx altid køres mindst en gang, hvorimod do while xx ... loop køres kun hvis nødvendigt.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.