如何在MYSQL / SQL中的以下场景中查询过滤结果?

时间:2014-06-20 03:05:52

标签: php mysql sql database codeigniter

我正在开发类似于Facebook评论/论坛帖子的功能。

表结构如下:

Post
========    
id
txtMsg
createDate
updateDate
isShow
userID
postID

User
=======
id
name

所以,这个表已经代表了帖子和评论。这意味着,如果它是一个帖子,postID将为null,如果这是回复,则它具有父postID。

我的目标是

  1. 按创建日期(描述)获取用户的评论/帖子及其朋友的发布订单。

  2. 有一个字段调用 isShow ,这意味着,对于任何isShow为0的帖子,所有帖子和评论都不应包含在结果集中。

  3. 加入用户表以获取用户名

  4. 我在codeigniter项目上工作但是没关系,我可以转换语法SQL查询。非常感谢您提供任何帮助。

    在我的预期结果中,我可以在我的界面中生成这样的输出

        Comment-er name (comment date)
        comment message
    
        1st Reply-er name (1st reply date)
        1st reply message
    
        2nd Reply-er name (2nd reply date)
        2nd reply message
    
    .....
    

    尝试这样的代码,但需要一些调整,其中$ facebookIDList包含userID和用户的朋友ID

    $this->db->select('c.id as id, u.name as username, c.txtMsg as txtMsg, c.createDate as createDate, c.updateDate as updateDate, c.imageURL as imageURL, c.postID as postID, c.isShow as isShow');
    $this->db->from('comment as c, user as u');
    $this->db->where('u.id = c.userID');
    $this->db->where('c.isShow = 1');
    $this->db->where_in('c.userID', $facebookIDList);
    $this->db->order_by('c.createDate', 'Desc');
    

1 个答案:

答案 0 :(得分:1)

请澄清一件事。你说"所以,这个表已经代表了帖子和评论。这意味着,如果它是一个帖子,postID将为null,如果这是回复,则它具有父postID。" 如果任何新帖子的postID为null,那么你如何将父postID放回来?