php - 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();
它不起作用,有可能吗?
解决方案
您的查询看起来很好。您只需要使用它所属的表来限定子句中的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 = ?
推荐阅读
- python - 检查一个单词是否是回文
- java - 如何从对象填充 android 中的文本?
- notepad++ - 如何使用记事本++删除文件夹中所有文件中的特定行?
- c - 当我将指针传递给函数时出现分段错误
- excel - 使用单元格值检查列表框选定项值
- azure - 逻辑应用中的 Webhook 与 Http 请求
- c# - Smartsheet API 下拉列表
- html - HTML 5标签不下载文件但打开一个新页面
- java - 确定 arraylist2 的输入是否存在于 arraylist1 中,因为它们被放入
- javascript - CSS/JS - 如果单词对于容器来说太长,则覆盖字体大小