使用join通过4个表获取字段

fslejnso  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(338)

我有4个表,我希望使用mysql内部连接到用户名(表1)和fav类型(表4)。为了做到这一点,我需要使用user\u id获取表2上相应的fav\u id,然后使用fav\u id获取表3上的类型\u fav\u id,最后使用表3上的类型\u fav\u id获取表4上的类型\u fav。我将感谢任何帮助。
表1

  1. Users
  2. ----------
  3. user_id
  4. first_name
  5. last_name

表2

  1. user_favorite
  2. --------
  3. user_fav_id
  4. user_id
  5. fav_id

表3

  1. favorites
  2. --------
  3. fav_id
  4. type_of_fav_id

表4

  1. types_of_fav
  2. --------
  3. type_of_fav_id
  4. type_of_fav
cnwbcb6i

cnwbcb6i1#

其实这很简单。只需连接四个表中的每一个,将每个表的主键链接到下表中对应的外键。然后可以在select子句中引用所需的字段。

  1. SELECT u.first_name, u.last_name, tof.type_of_fav
  2. FROM users u
  3. JOIN user_favorite uf ON u.user_id = uf.user_id
  4. JOIN favorites f ON uf.fav_id = f.fav_id
  5. JOIN types_of_fav tof on f.type_of_fav_id = tof.type_of_fav_id

在这里设置表名的缩写是个好主意。你不必这么做,但它更简洁,更容易处理。如果不这样做,则必须引用完整的表名,以避免字段引用中的歧义: JOIN user_favorite on users.user_id = user_favorite.user_id ,例如。那可真是太啰嗦了。
如果在引用字段时不包含表,解析器就不知道引用的是哪个字段,因为字段名在整个模式中不是唯一的。因此,您将得到一个不明确的字段引用错误。

相关问题