首页 > 解决方案 > MySQL根据2个不同的表匹配值加入另一个表值?

问题描述

预期的结果是 12(price) 和 pic.png(profilepic)。这是否可以根据匹配的job_id(工作+offers)加入工作和个人资料,这些工作和个人资料在个人资料和优惠之间具有匹配的用户ID,所有这些都基于$_SESSION [user_id]?

       Jobs                          Offers                Profile
user_id | job_id | price |    | user_id | job_id |   |user_id | profilepic |
   1    |   1    |   12  |    |    4    |    1   |   |   4    |   pic.png  |
--------------------------    --------------------   -----------------------
$sql="SELECT
      j.price,
      p.profilepic
      FROM Jobs j
      INNER JOIN Offers o  ON o.job_id = j.job_id
      INNER JOIN Profile p ON o.user_id = p.user_id
      WHERE user_id=?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i",$_SESSION['user_id']);
$stmt->execute();
$stmt->bind_result($price,$profilepic);
$stmt->fetch();

它不起作用,有可能吗?

标签: phpmysqlsqljoinselect

解决方案


您的查询看起来很好。您只需要使用它所属的表来限定子句中的user_id列:from

SELECT j.price, p.profilepic
FROM Jobs j
INNER JOIN Offers o  ON o.job_id = j.job_id
INNER JOIN Profile p ON o.user_id = p.user_id
WHERE p.user_id = ?  -- or j.user_id = ?

推荐阅读