Avatar billede benhur Nybegynder
25. april 2005 - 12:59 Der er 8 kommentarer og
1 løsning

Count og join problemer

Hejsa.
Jeg sidder og er ved at brygge et forum sammen, men er nu stødt ind i lidt problemer med hensyn til hvordan jeg skal udføre min forespørgsel.

Fra min database skal disse to tabeller bruges:
klasse_topics
  - topic_id
  - forum_id
  - emne
klasse_threads
  - thread_id
  - topic_id
  - brugerid
  - osv...

forum_id'et ligger ikke i en database der kun er 3 af dem og derfor ikke er nøvendigt.
Det jeg vil er at tælle hvor mange klasse_threads der er under et bestemt forum_id. For at dette skal kunne lykkes skal man igennem klasse_topics på en eller anden facon.

Jeg har prøvet med denne forespørgsel, men den virker ikke:
svarSQL1 = "SELECT COUNT(thread_id) AS svar1 FROM klasse_threads INNER JOIN klasse_topics ON klasse_threads.topic_id = klasse_threads.topic_id WHERE klasse_topics.forum_id =1"

Desuden har jeg et lille tillægs spørgsmål:
Der skal også tælles på hvor mange topics der er under hvert forum_id. Det er som sådan heller ikke noget problem at gøre det for hvert enkelt forum_id.

AntalSQL1 = "SELECT COUNT(topic_id) AS traade1 FROM klasse_topics WHERE forum_id =1"
    AntalSQL2 = "SELECT COUNT(topic_id) AS traade2 FROM klasse_topics WHERE forum_id =2"
    AntalSQL3 = "SELECT COUNT(topic_id) AS traade3 FROM klasse_topics WHERE forum_id =3"

Set Antal1 = Forbindelse.execute(AntalSQL1)
    Set Antal2 = Forbindelse.execute(AntalSQL2)
    Set Antal3 = Forbindelse.execute(AntalSQL3)
Men der må da være en smartere måde at gøre det på...?

Jeg ved ikke hvad løsningen af dette problem er værd, men hvis ikke 60 er nok, sparker jeg bare antallet op.
Avatar billede cpufan Juniormester
25. april 2005 - 13:14 #1
du har bare skrevet forkert:
svarSQL1 = "SELECT COUNT(thread_id) AS svar1 FROM klasse_threads INNER JOIN klasse_topics ON klasse_threads.topic_id = klasse_threads.topic_id WHERE klasse_topics.forum_id =1"

skal være:
svarSQL1 = "SELECT COUNT(thread_id) AS svar1 FROM klasse_threads
where klasse_topics.topic_id = klasse_threads.topic_id AND klasse_topics.forum_id =1"
Avatar billede benhur Nybegynder
25. april 2005 - 13:27 #2
Det virker ikke.. Jeg får en fejlmelding om at tabellen klasse_topics ikke eksisterer. Hvilket ikke giver mening da f.eks. denne forespørgsel virker: AntalSQL3 = "SELECT COUNT(topic_id) AS traade3 FROM klasse_topics WHERE forum_id =3"
Nogen der kan se problemet?
Avatar billede cpufan Juniormester
25. april 2005 - 13:58 #3
hvad med:

svarSQL1 = "SELECT COUNT(thread_id) AS svar1 FROM klasse_threads, klasse_topics
where klasse_topics.topic_id = klasse_threads.topic_id AND klasse_topics.forum_id =1"
Avatar billede benhur Nybegynder
25. april 2005 - 14:30 #4
Yes det virker! mange tak skal du ha' for hjælpen. Jeg giver dig point nu, men du har vel ikke en ide til løsning af det sekundære problem?
Avatar billede cpufan Juniormester
25. april 2005 - 14:44 #5
hvad med
antalsql = "SELECT COUNT(topic_id) AS traade FROM klasse_topics group by forum_id"

så har du rs(0), rs(1) og rs(2)
Avatar billede benhur Nybegynder
25. april 2005 - 15:10 #6
Det lader til at virke... men er ikke sikker på hvordan jeg skal kalde den.
hvis jeg executer den sådan her Set Antal1 = forbindelse.execute(antalsql)

Så virker det fint nok hvis jeg kalder den sådan her:
<%=antal1("traade")%>
men hvordan får jeg fat i de resterende`?
<%=antal("traade...%>
Avatar billede cpufan Juniormester
25. april 2005 - 15:23 #7
"SELECT COUNT(topic_id),Count(distinct forum_id) FROM klasse_topics group by forum_id"

jeg er lidt på glatis
Avatar billede benhur Nybegynder
25. april 2005 - 15:42 #8
Jeg kan ikke få det til at virke, men det går nok. Jeg bruger bare den anden metode. Men tak for hjælpen ellers.
Avatar billede cpufan Juniormester
25. april 2005 - 18:00 #9
ok,
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
Kurser inden for grundlæggende programmering

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