Avatar billede chris2k Nybegynder
18. december 2001 - 22:47 Der er 8 kommentarer og
1 løsning

Problemer med JOIN query

Har denne query:

SELECT FM1.*, users.login, COUNT(FM2.*) FROM tbl_forum_messages AS FM1 LEFT JOIN users ON users.id=FM1.fld_user LEFT JOIN tbl_forum_messages as FM2 ON FM2.fld_reply_to=FM1.fld_id WHERE FM1.fld_forum_id=1

målet er at jeg vil hente alle informationer fra tbl_forum_messages (FM1), hente login fra users og finde ud af hvor mange records der er i tbl_forum_messages (FM2) som er linket til FM1.

Men når jeg putter min COUNT ind, så går det galt. Nogen idéer?

Ud over det får jeg ingen fejl meddelse fra mysql...kun at der er sket en fejl...
Avatar billede tmceu Praktikant
19. december 2001 - 00:15 #1
Der er fordi en COUNT er en \"aggregate function\" og kræver derfor en GROUP BY på alle andre felter (som ikke anvendr aggregate funktioner)

Eks. vil nedenstående være korrekt:

SELECT Felt, COUNT(*) GROUP BY Felt
Avatar billede chris2k Nybegynder
19. december 2001 - 15:22 #2
Hvordan skal det stilles op?

Har prøvet

SELECT FM1.*, users.login, COUNT(FM2.*) FROM tbl_forum_messages AS FM1 LEFT JOIN users ON users.id=FM1.fld_user LEFT JOIN tbl_forum_messages as FM2 ON FM2.fld_reply_to=FM1.fld_id WHERE FM1.fld_forum_id=1 GROUP BY FM1.fld_id

Uden held
Avatar billede tmceu Praktikant
19. december 2001 - 15:44 #3
Du kan ikke bruge FM1.* i denne sammenhæng, men er nødt til at nævne alle felter eksplicit, fordi de alle skal indgå i GROUP BY
Avatar billede chris2k Nybegynder
19. december 2001 - 15:51 #4
Kan du ikke give et eksempel.
Avatar billede tmceu Praktikant
19. december 2001 - 17:02 #5
Øhh jo, men det har jeg sådan set allerede gjort. Men kan da godt prøve at uddybe lidt:

SELECT Land, By, Navn, COUNT(*) AS Taeller GROUP BY Land, By, Navn

Dette vil give et resultat hvor værdien af count grupperes pr. Land/By/Navn
Avatar billede chris2k Nybegynder
19. januar 2002 - 00:04 #6
Spørgsmålet lukkes.
Avatar billede tmceu Praktikant
20. januar 2002 - 13:06 #7
Og det var så takken for et korrekt svar!
Avatar billede chris2k Nybegynder
20. januar 2002 - 13:18 #8
Det var ikke korrekt.
Avatar billede tmceu Praktikant
21. januar 2002 - 00:37 #9
Dit problem var at du anvendte COUNT uden GROUP BY. Du spørger så efter et eksempel på hvordan man laver en korrekt GROUP BY og du fik et 100% korrekt svar. Og én måned senere takker du for hjælpen med \"spørgsmålet lukkes\" :-(

Jeg er ikke ligefrem i point nød, så det er ikke de 15 point jeg jagter. Men du burde udvise bare en smule respekt for de mennesker som gratis hjælper dig i et forum som dette.

Du kunne eks. fortælle hvad du mener der ikke er korrekt og vise den kode som du mener er rigtig, jvf. Ekspertens regler om at svar/løsninger på alle spørgsmål skal være tilgængelige for alle.
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