webForumDet fria alternativet

Jämförelse i MySQL Subquery

2 svar · 634 visningar · startad av Davlid

DavlidMedlem sedan okt. 200725 inlägg
#1

Jag har följande SQL fråga, och problemet verkar ligga i jämförelsen mellan p.post_id och c.post_id. Tar jag bort den markerade WHERE-satsen så returneras antalet poster i tabellen blogcomments som det ska.

Men följande kod fungerar alltså inte. Är det något speciellt man måste tänka på när man gör detta i MySQL?

SELECT p.post_id, (
 SELECT COUNT( * ) 
 FROM `blogcomments` c 
 [blue]WHERE p.post_id = c.post_id[/blue]
)
FROM `blogposts` p;

Jag får följande meddelande:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

MySQL Serverversion: 5.0.45

Jag bifogade den nuvarande tabellstrukturen om någon vill testa.

Peter SMedlem sedan dec. 20025 483 inlägg
#2

Välkommen till wF!

Du kan använda GROUP BY i stället:

SELECT p.post_id
     , COUNT(*) 
  FROM `blogposts` p`
INNER
  JOIN `blogcomments` c
    ON p.post_id = c.post_id
GROUP
    BY p.post_id
DavlidMedlem sedan okt. 200725 inlägg
#3

Hej Peter,

Tack för välkomnandet och svaret! Jag fick precis samma tips från annat håll och fick erkänna min ringrostighet vad det gäller SQL :-)

Tack för ett snabbt svar!

140 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)