2012-08-12 53 views
2

目前我有这个MySQL只返回行:mysql的连接表,查询相匹配的行

$result = mysql_query("SELECT blog.id, blog_comments.cid, blog.name, 
    blog.blogtext, blog.date, blog.like, blog.dislike, blog_comments.comment, blog_comments.date 
FROM blog, blog_comments 
WHERE blog.id = blog_comments.cid 
ORDER BY blog.id DESC LIMIT 30") 

查询返回的行和他们的意见,问题是:它只返回他们的意见行,这不是” t返回没有评论的行。我找到了几个主题,并发现我可能应该使用FULL OUTER JOIN。现在我试图应用这个,缺席成功。

援助深表感谢

回答

3

不是一个隐式连接(表的逗号分隔的列表产生INNER JOIN),使用一个明确的LEFT JOIN

SELECT 
    blog.id, 
    blog_comments.cid, 
    blog.name, 
    blog.blogtext, 
    blog.date, 
    blog.like, 
    blog.dislike, 
    blog_comments.comment, 
    blog_comments.date 
FROM 
blog 
/* LEFT JOIN will return rows from blog (the "left" side of the join) even if no 
    related rows exist in blog_comments (the "right" side of the join) */ 
LEFT JOIN blog_comments ON blog.id = blog_comments.cid 
ORDER BY blog.id DESC 
LIMIT 30 
+0

感谢您的快速回答:)得到它的工作像现在的魅力,晚安! – 2012-08-12 22:28:33