mysql是否基于两个不同的表连接另一个表值?

jaxagkaj  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(355)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

11个月前关门了。
改进这个问题
预期结果是12(price)和pic.png(profilepic)。这是否可以基于匹配的job\u id(jobs+offers)加入jobs和profile,它们在profile和offers之间具有匹配的用户id,所有这些都基于$会话[user\u 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();

它不起作用,可能吗?

kkbh8khc

kkbh8khc1#

你的问题看起来很好。您只需要限定列 user_idfrom 包含所属表的子句:

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 = ?
omqzjyyz

omqzjyyz2#

mysql不喜欢有两个相同的列 userid . 所以只需为where子句选择一个

$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 j.user_id=?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i",$_SESSION['user_id']);
$stmt->execute();
$stmt->bind_result($price,$profilepic);
$stmt->fetch();

参见示例https://www.db-fiddle.com/f/wuqvknzy96rjr7htk3md7o/6

相关问题