mozillaMedlem sedan juli 20011 202 inlägg
"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..."
Editerad för att öka läsbarhet/LarsG
LarsGMedlem sedan dec. 200012 465 inlägg
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.
mozillaMedlem sedan juli 20011 202 inlägg
Microsoft OLE DB Provider for ODBC Drivers (0x80040E09) skrev:
[TCX][MyODBC]You have an error in your SQL syntax near 'ON n.user_ID = u.user_ID LEFT JOIN tblComment c ON n.object_id = c.object_id GRO' at line 1
Fick dock error när jag testade din kod?
LarsGMedlem sedan dec. 200012 465 inlägg
Det finns inget syntaxfel i min kod ;)
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?
mozillaMedlem sedan juli 20011 202 inlägg
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? :stud
LarsGMedlem sedan dec. 200012 465 inlägg
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.
mozillaMedlem sedan juli 20011 202 inlägg
Jo, det fungerar bra med INNER, men vad är det för skillnad mellan INNER och LEFT?
LarsGMedlem sedan dec. 200012 465 inlägg