表格:
items -> id, userId, tagId, postedOn
itemsTags -> id, name
users -> id, firstName, lastName
usersFriends -> id, userId, friendUserId
系统需要重新构建,目前流程是这样的:
- 获取用户的所有好友。
- 每个 friend (foreach) 获取 friend 发布的项目。
- 获取商品的标签数据(tagId)。
- 获取商品的用户数据(userId)。
但问题是,我需要按日期排序,然后再按特定日期排序,例如,我想查看我 friend 今天发布的所有项目,所以我需要一个查询来执行这 4 个查询合二为一,所以基本上 SELECT * FROM usersFriends JOIN items ON userId ...
剩下的我想不通了。
最佳答案
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 放在问号的哪个位置。
关于mysql - 复杂的连接/联合查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8262967/