复杂的连接/联合查询

时间:2011-11-24 22:15:47

标签: mysql join

表:

items -> id, userId, tagId, postedOn

itemsTags -> id, name

users -> id, firstName, lastName

usersFriends -> id, userId, friendUserId

系统需要重新构建,目前流程是这样的:

  1. 获取用户的所有朋友。
  2. 每位朋友(foreach)获取朋友发布的物品。
  3. 获取项目的标签数据(tagId)。
  4. 获取项目的用户数据(userId)。
  5. 但问题是,我需要按日期排序,稍后按特定日期排序,例如,我想查看今天发布的朋友的所有项目,所以我需要一个执行这4个查询的查询在一个,所以基本上SELECT * FROM usersFriends JOIN items ON userId ...

    我无法弄清楚其余部分。

1 个答案:

答案 0 :(得分:1)

SELECT F.*, I.*, IT.* 
FROM usersFriends UF 
  LEFT JOIN users F                  --- friends
    ON F.id = UF.friendUserId 
  LEFT JOIN items I                  --- items they posted
    ON I.userId = UF.friendUserId 
  LEFT JOIN itemsTags IT             --- tags of those items
    ON I.tagId = IT.id 
WHERE UF.userId = ??

在问号上放置用户的ID。