/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Hente spørgsmål OG svar.
Fra : Thomas Voller


Dato : 31-12-02 00:19

Hej NG.



Jeg sidder og bakser et forum sammen i ASP. På forumets forside vil jeg
selvfølgelig gerne have en oversigt over alle de emner der er skrevet om,
men jeg vil også gerne have vist hvor mange svar, der er på et givet emne.

Indtil videre har jeg gjort som følger:

Hent emner fra en database (SQL).
Do Until blablabla...
Udskriv emne
Hent og udskriv antal svar på aktuelle post fra en anden database (SQL).
Næste
Loop

En ret enkel måde at gøre det på, men der kommer jo en f... masse kald til
databasen. Det har jeg fået at vide fra en ven, at man kan undgå. Noget med
at kombinere de to SQL statements. Hvem kan hjælpe mig med det?



MVh. Voller.



 
 
Jonas Skafte Jensen (31-12-2002)
Kommentar
Fra : Jonas Skafte Jensen


Dato : 31-12-02 14:03

> En ret enkel måde at gøre det på, men der kommer jo en f... masse kald til
> databasen. Det har jeg fået at vide fra en ven, at man kan undgå. Noget
med
> at kombinere de to SQL statements. Hvem kan hjælpe mig med det?

Det kan jeg (!)
Lad mig se dine to SQL statements...

~J



Thomas Voller (01-01-2003)
Kommentar
Fra : Thomas Voller


Dato : 01-01-03 14:09

> Lad mig se dine to SQL statements...


' DB forbindelse
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &
Server.MapPath("../db/database.mdb")

'Hent de ti nyeste emner. SQL 1.
Set rs = Conn.Execute("SELECT TOP 10 * FROM log ORDER BY Id DESC")

'Bearbejd data fra RS.
if (rs.BOF or rs.EOF) then
Blablabla
Else
Do While Not rs.EOF
Response.Write(*Udskriv liste over emner*)
'Hent antallet af svar på det emne der behandles nu. SQL 2.
Set recordCount = Conn.Execute("Select Count(*) As ItemCount From comment
Where newsid = '" & rs("Id") & "'")
'Arbejd med SQL 2.
if recordCount("ItemCount") = 1 then
Response.Write("Et svar")
Else
Response.Write(recordCount("ItemCount") & " antal svar")
End if
rs.MoveNext
Loop
End if
'Luk DB forbindelse, recordsets og alt det der...


En lidt hurtig udgave af koden, hvor jeg har skåret alt det irrelevante fra.
Jeg har smidt et par kommentarer ind nogle steder. Kan jeg få dig til at
kigge lidt på det? :)



Godt nytår til alle.



Jonas Skafte Jensen (02-01-2003)
Kommentar
Fra : Jonas Skafte Jensen


Dato : 02-01-03 01:01

Hej igen,
jeg tror at det du efterlyser er dette:

SELECT TOP 10 log.*, (SELECT COUNT(*) AS ItemCount FROM comment c
WHERE c.newsid = l.id) FROM log l ORDER BY l.Id DESC




Thomas Voller (02-01-2003)
Kommentar
Fra : Thomas Voller


Dato : 02-01-03 16:34

> jeg tror at det du efterlyser er dette:

Desværre. Det virkede ikke efter hensigten. Fik en pokkers mængde
syntaks-fejl. Jeg er imidlertid kommet frem til noget der virker.

SELECT TOP 10 count(comment.newsID) as ItemCount, log.Id, log.Dag, log.Tid,
log.Overskrift, log.Tekst
FROM log LEFT OUTER JOIN comment ON comment.newsID = log.ID
GROUP BY comment.newsID, log.Id, log.Dag, log.Tid, log.Overskrift, log.Tekst
ORDER BY log.Id DESC

Men tak for forsøget.


Thomas.



Søg
Reklame
Statistik
Spørgsmål : 177551
Tips : 31968
Nyheder : 719565
Indlæg : 6408836
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste