繁体   English   中英

数据库关系

[英]Database relationships

我正在尝试显示某个类别中的所有面板,但是我在使用SQL查询时遇到了麻烦。 我希望它浏览某个类别中的所有帖子,从中获取用户ID,从用户表中找到用户名,然后计算帖子中有多少评论。

这是表格和一些字段:

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和数据库关系的更多信息。 左联接?

左联接是必经之路,因为它们会从a提取所有内容,而不管b或c中是否有相应的条目。 可以在此处找到有关联接(以及一般来说是SQL)的更多信息

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']."'" 

使用SQL-92连接语法(在其中显式使用join )关键字进行连接,这使查询更具可读性,尤其是在开始添加外部连接之后。

是的,您希望left join到您的评论表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM