mysql - 复杂的连接/联合查询

标签 mysql join

表格:

items -> id, userId, tagId, postedOn

itemsTags -> id, name

users -> id, firstName, lastName

usersFriends -> id, userId, friendUserId

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

  1. 获取用户的所有好友。
  2. 每个 friend (foreach) 获取 friend 发布的项目。
  3. 获取商品的标签数据(tagId)。
  4. 获取商品的用户数据(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/

相关文章:

mysql - 如何在MySQL select中转义单引号和双引号?

mysql - 使用 GoLang 从 MySql 数据库将图像 (blob/jpeg) 转换为 html

java - preparedstatement 的 executebatch() 不返回添加的批处理数

sql - 同一张表上的 DB 笛卡尔积

mysql连接和json输出

php - 无法访问 var/www ubuntu 中复制的文件

mysql - 错误::外键约束失败

mysql - 如何在已准备好具有多个联接的数据库上执行之间查询?

mysql - 使用表中的连接和更新计算列值

mysql - 多个JOIN之间的关系