数据库关系
问题描述:
我试图显示某个类别中的所有板,但是我遇到了SQL查询的问题。我希望它能够浏览某个类别中的所有帖子,从中获取用户标识,从users表中找到用户名,然后计算帖子中有多少条评论。数据库关系
这里的表和一些字段:
boards
board_id
comments - the replies to the post
comment_id
discussion - the posts
discussion_id
discussion_user
discussion_board
discussion_time
discussion_title
users
id
username
本来我有这样的:
SELECT
a.discussion_id,
a.discussion_time,
a.discussion_title,
a.discussion_type,
a.discussion_media,
b.username,
Count(c.comment_id) AS totalComments
FROM
discussion a,
users b,
comments c
WHERE
discussion_board='".$board['board_id']."' AND
b.id=a.discussion_user AND
c.comment_post=a.discussion_id
但它只能说明后,如果能找到注释。
我该如何解决这个问题?我仍然在学习更多关于SQL和数据库的关系。左连接?
答
使用SQL-92连接语法(您明确使用join
)关键字进行连接时,会使查询更具可读性,尤其是在开始添加外连接之后。
是的,你想要一个left join
到你的评论表。
答
SELECT a.discussion_id, a.discussion_time, a.discussion_title, a.discussion_type, a.discussion_media, b.username, Count(c.comment_id) AS totalComments FROM discussion a,
left join users b on b.id=a.discussion_user
left join comments c on c.comment_post=a.discussion_id WHERE discussion_board='".$board['board_id']."'"
http://stackoverflow.com/questions/419375/sql-join-differences – jball 2010-12-08 18:39:49