Avatar billede thewizard Nybegynder
14. december 2004 - 15:58 Der er 7 kommentarer og
1 løsning

Random overskrift.. oO Let spørgsmål, kom glad

Riiiite.. Okay, Arne regnede

strSQL = "SELECT bbstopic.ID AS id,bbstopic.topic AS topic,COUNT(*) AS cnt FROM bbstopic,bbsreply WHERE bbstopic.id=bbsreply.targettopicID GROUP BY bbstopic.ID,bbstopic.topic ;"

.. ud, som tæller antal poster i bbsreply, som har bbsreply.targettopicID, ens med bbstopic.ID.

Vil gerne hive arne - eller en af jer 100 hurtigere, lette point, hvis i løser følgende spørgsmål.

Første .asp site som brugeren kommer ind på er bbs.asp. Denne site lister bbscategory - dette er steder hvor de kan poste deres topics. I denne er der 2 stier: Community og Client. Som hver har et ID. Client = 1, Community = 2.

Klikker vi på Client, kommer vi ind på category.ASP?ID=1, hvorefter vi har arne's SQL-sætning til at hive topics'ne ud fra bbstopic og antal replies ud fra bbsreply.

Det virker skam her i "client", men går vi tilbage, og smutter ind under vores "community"; lister den stadig fra "client"-categorien.

Category.asp skal derfor bruge sin ID = Request("ID"), og bruge den til at fremtvinge de rigtige topics ;).

Her har i min kode:

<%
ID = Request("ID")
%>

<%
    Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT bbstopic.ID AS id,bbstopic.topic AS topic,COUNT(*) AS cnt FROM bbstopic,bbsreply WHERE bbstopic.id=bbsreply.targettopicID GROUP BY bbstopic.ID,bbstopic.topic ;"
    rs.Open strSQL, Conn
%>

<%

Do until RS.EOF
%>




<a href="topic.asp?ID=<%=RS("ID")%>"><%=RS("topic")%></a><%=RS("cnt")%>


<%
RS.MoveNext
loop

%>

Vil regne med der blot mangler et ... select noget WHERE .. something something oO

Arne, kom glad.
Avatar billede thewizard Nybegynder
14. december 2004 - 15:59 #1
I kan altid læse: http://www.eksperten.dk/spm/570888 først, så ved i mere om situationen :). Hvis det er svært at forstå
Avatar billede thewizard Nybegynder
14. december 2004 - 18:54 #2
Okay, har fået smidt ID'et ind:


<%
    Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT bbstopic.ID AS id,bbstopic.topic AS topic,COUNT(*) AS cnt FROM bbstopic,bbsreply WHERE bbstopic.id=bbsreply.targettopicID AND categorytarget = " & ID & " GROUP BY bbstopic.ID,bbstopic.topic ;"
    rs.Open strSQL, Conn
%>

<%

Do until RS.EOF
%>




<a href="topic.asp?ID=<%=RS("ID")%>"><%=RS("topic")%></a><%=RS("cnt")%>




<%
RS.MoveNext
loop

%>

Men den lister kun de topics med reply - og ikke alle, som den burde :/.
Avatar billede arne_v Ekspert
14. december 2004 - 19:18 #3
Hvis du skal have rækker fra bbstopic med som ingen rækker har i bbsreply, så skal
du nok have fat i en LEFT JOIN.

Noget a la:

strSQL = "SELECT bbstopic.ID AS id,bbstopic.topic AS topic,COUNT(bbsreply.targettopicID) AS cnt FROM bbstopic LEFT JOIN bbsreply ON bbstopic.id=bbsreply.targettopicID WHERE categorytarget = " & ID & " GROUP BY bbstopic.ID,bbstopic.topic ;"
Avatar billede thewizard Nybegynder
14. december 2004 - 21:17 #4
Hey arne - prøver din SQL string nu :) Er du online?
Avatar billede thewizard Nybegynder
14. december 2004 - 21:22 #5
Arne, kan du ikke forklare det med left og right? :) En ven har også prøvet kommandoen, men virkede ikke i hans tilfælde - dit virker! :).

Men kan du forklare det, simpelt, osv.? :). Lav det til svar, så giver jeg dig point, tusind tak.
Avatar billede arne_v Ekspert
14. december 2004 - 21:37 #6
tabelA LEFT JOIN tabelB ON tabelA.felt1=tabelB.felt2

betyder:

- tag alle rækker fra tabelA
- hvis der er en række i tabelB som opfylder ON betingelsen så lig den ved siden af
- hvis der ikke er en række i tabelB som opfylder ON betingelsen så fyld NULL i de kolonner
Avatar billede arne_v Ekspert
14. december 2004 - 21:38 #7
svar
Avatar billede arne_v Ekspert
14. december 2004 - 21:39 #8
Der er et simpelt eksempel i http://www.eksperten.dk/artikler/389
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester