2015-02-24 48 views
0

背景信息 - 我总共有4张桌子。从两个表中选择并从两个'朋友列表'中检查

  • 帖子 - 从论坛帖子
  • 好友列表 - - 商店友谊
  • 组成员 - 存储组成员
从普通用户
  • 组帖子帖子

    什么我试图达到的是:该页面将列出您自己,您的朋友和您加入的群组的所有帖子。

    (上查询) - 帖子&集团的职位是在同一个表,并在“类型”字段

    SELECT 
         DISTINCT p.id, 
         p.type, 
         p.user1, 
         p.user2, 
         p.content, 
         p.timestamp, 
         p.comments 
    FROM posts p, friends f, group_memberships g 
    WHERE (p.user1 = f.user2 AND f.user1 = 'MY ID') OR 
         p.user1 = 'MY ID' OR 
         (p.user1 = g.group_id AND g.user = 'MY ID') 
    ORDER BY p.timestamp, DESC LIMIT 10 
    

    确定之前,我曾在同一个表中的职位和group_posts。但现在,我认为他们应该在两张不同的表格中。

    (新查询) - 如果帖子和论坛帖子都在不同的表

    SELECT 
         DISTINCT p.id, 
         p.type, 
         p.user1, 
         p.user2, 
         p.content, 
         p.timestamp, 
         p.comments, 
         gp.id, 
         gp.type, 
         gp.user1, 
         gp.user2, 
         gp.content, 
         gp.timestamp, 
         gp.comments 
    FROM posts p, group_posts gp, friends f, group_memberships g 
    WHERE (p.user1 = f.user2 AND f.user1 = 'MY ID') OR 
         p.user1 = 'MY ID' OR 
         (p.user1 = g.group_id AND g.user = 'MY ID') 
    ORDER BY p.timestamp, gp.timestamp DESC LIMIT 10 
    

    我得到的结果是整个行充满了从我group_posts同一职位。

    而且,我的IDS在这两个职位& group_posts不是顺序的,即职位可能有100个职位,但group_posts可能只有30

    有什么不对?

  • 回答

    0

    试试这个:

    SELECT 
         p.id, 
         p.type, 
         p.user1, 
         p.user2, 
         p.content, 
         p.timestamp, 
         p.comments, 
         gp.id, 
         gp.type, 
         gp.user1, 
         gp.user2, 
         gp.content, 
         gp.timestamp, 
         gp.comments 
    FROM posts p, group_posts gp, friends f, group_memberships g 
    WHERE (p.user1 = f.user2 AND f.user1 = 'MY ID') OR 
         p.user1 = 'MY ID' OR 
         (p.user1 = g.group_id AND g.user = 'MY ID') 
    
    GROUP BY p.id 
    ORDER BY p.timestamp, gp.timestamp DESC LIMIT 10; 
    

    说明每个岗位切换DISTINCTGROUP BY到组。

    +0

    嘿,我仍然得到相同的结果。而且,我的两个帖子和group_posts的ID都不是按顺序排列的,即帖子可能有100个帖子,但是grouo_posts可能只有30个。 – Jas 2015-02-24 01:53:56

    +0

    你可以用一些['sqlfiddle'](http://sqlfiddle.com/)样本数据和预期结果? – Martin 2015-02-24 03:38:32