2015-02-24 49 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