"SELECT n.object_ID,n.user_ID,u.nickname,
n.news_topic,n.news_msg,n.news_date,
(SELECT Count(object_ID) FROM tblComment WHERE object_ID = n.object_ID AND type_ID = 1)
FROM tblNews n,tblUser u
WHERE n.user_ID = u.user_ID
ORDER BY n.news_date DESC LIMIT 0,5"
Hur får jag denna SQL satsen att fungera i mySQL? Jag har vänt
och vridit på den ett bra tag nu utan att komma till någon bra
lösning? Problemet ligger i att jag vill Hämta ut antalet
kommentarer till varje nyhet, men mySQL klagar vid ",(SELECT..."
SELECT n.object_ID,n.user_ID,u.nickname,
n.news_topic,n.news_msg,n.news_date,
Count(c.object_ID)
FROM tblNews n join tblUser u
on n.user_ID = u.user_ID
left join tblComment C
on n.object_id = c.object_id
group by n.object_ID,n.user_ID,u.nickname,
n.news_topic,n.news_msg,n.news_date
ORDER BY n.news_date DESC
LIMIT 0,5
Du får nog vänta någon/några versioner till innan det finns skalär subselect i mysql.
Hur ser det ut i din kod? Är det PHP eller ASP? Kan du lägga till en utskift av statementet innand du skickar den till mysql? Kanske det saknas någon blank vid radbrytning?
SELECT n.object_ID,n.user_ID,u.nickname,
n.news_topic,n.news_msg,n.news_date,
Count(c.object_ID)
FROM tblNews n [b]left[/b] join tblUser u
on n.user_ID = u.user_ID
left join tblComment C
on n.object_id = c.object_id
group by n.object_ID,n.user_ID,u.nickname,
n.news_topic,n.news_msg,n.news_date
ORDER BY n.news_date DESC
LIMIT 0,5
Om jag lägger till left i koden fungerar det tillfredsställande. Dvs. jag får ut den information som jag vill ha. Det kan inte vara så att de ska vara ett "left" där?
Nej, kanske kan vara så att mysql kräver att det står inner join. Jag tittar i Mysql dokumentationen. Enligt standard sql sä är ordet inner inte nödvändigt.
Byt left mot inner för left join och inner join är inte samma sak.