首页 > 解决方案 > SQL 连接 3 个表,然后在单个查询中从第 4 个表中提取数据

问题描述

我的数据库是 MySQL。我有 4 个表,结构如下:

users
---------------------------------
id | user_name | email | password
---------------------------------

tools
-----------------------------
id | tool_name | tool_details
-----------------------------

package
----------------------------------------------
id | package_name | tool_id | price | validity
----------------------------------------------

transaction
-----------------------------------------------
id | user_id | package_id | buy_date | expire_date
-----------------------------------------------

现在,我有 users.id 作为输入,我想知道哪个用户正在使用哪个工具的哪个包。输出应该是这样的

user_name | tool_name | tool_details | package_name | price | buy_date | expire_date

我已运行此查询,但使用此查询我不知道如何获取 tool_name

SELECT 
  users.user_name, 
  transaction.package_id, 
  transaction.buy_date, 
  transaction.expiry_date
  package.price 
FROM 
  transaction 
  INNER JOIN 
    users ON 
    users.id = transaction.user_id 
  INNER JOIN 
    plans ON 
    transaction.package_id = package.id

标签: mysqlsql

解决方案


只需添加另一个连接即可从您的工具表中引入列

SELECT 
  users.user_name, 
  transaction.package_id, 
  transaction.buy_date, 
  transaction.expiry_date,
  package.price,
  tools.tool_name 
FROM 
  transaction 
  INNER JOIN 
    users ON 
    users.id = transaction.user_id 
  INNER JOIN 
    package ON 
    transaction.package_id = package.id
  INNER JOIN
    tools ON
    package.tool_id = tools.id

推荐阅读