02. januar 2003 - 13:13Der er
5 kommentarer og 1 løsning
SQL statements
Hej Eksperter.
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:
*DB forbindelse* *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 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? Har prøvet noget med INNER JOIN med det bliver noget rod (når jeg prøver).
Med version 7 af TeamShare tager Lector næste skridt og bygger en platform for AI-agenter, der i højere grad kan følge medarbejderen gennem hele arbejdsprocessen.
Nu ved jeg ikke rigtig hvad dine kolonner hedder da du bruger select * (fyyy...) men ellers er SQL- syntaxen: SELECT TOP 10 count(*) as ItemCount, Id, Emne FROM log Group by Id, Emne ORDER BY Id DESC
I en tabel i min database har jeg en masse indlæg liggende (log). I en anden tabel i min database har jeg svarene liggende (comment). Jeg vil gerne have en oversigt over emnerne, taget fra tabel et. Efter den oversigt vil jeg gerne talt hvor mange svar der er på pågældende indlæg.
Bortset fra det hedder mine kollonner i log Id, Dag, Tid, Overskrift og Tekst, men jeg skal bruge indholdet af alle kollonner, så jeg henter dem alle med * i stedet for at nævne dem med deres titel.
nååja, det kan da egentlig godt se når du lige nævner det! Men ja, den er ikke særlig anderledes: SELECT TOP 10 count(comment.newsID) as ItemCount, log.* Emne FROM log inner 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
Hvis du bruger left outer join frem for inner join får du også de emner der ikke er kommentarer på...
.. bemærk at alle de felter du vil have med ud i forespørgslen skal angives i Group By..
Jeg rodede lidt frem og tilbage med det og kom frem med noget, der virkede: 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
Tak for hjælpen.
Synes godt om
Ny brugerNybegynder
Din løsning...
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.