>我有 3 张桌子
结果表
outcome_id,结果
参考文献表
refs_id, 分支号, 同事ID, 同事2id, 日期戳
同事表
colleague_id、名称、分支
这是我用来绘制同事姓名而不是数字的 mysqli 语句。这也适用于结果而不是outcome_id。
我遇到的问题是我无法将 colleague2id 加入同事表中的名称。
SELECT * FROM refs
JOIN colleague ON colleague.colleague_id=refs.colleagueid
JOIN outcome ON outcome.outcome_id=refs.outcome
WHERE branchno ='{$_SESSION["branchinfo"]["storeno"]}'
输出到 PHP
echo "<td>".$row["refs_id"])."</td>" . "
<td>".$row['name'] . "</td>
<td>".$row['colleague2id'] . "</td>
<td>".$row['outcome'] . "</td>
如何让$row['colleague2id']
显示 colleague.name 而不是身份证号码?
抱歉,如果这没有正确格式化,这是我的第一篇文章。
你需要两个连接同事表(使用别名 a 和 b(
SELECT *
FROM refs
JOIN colleague as a ON a.colleague_id=refs.colleagueid
JOIN colleague as b ON b.colleague_id=refs.colleague2id
JOIN outcome ON outcome.outcome_id=refs.outcome
WHERE branchno ='{$_SESSION["branchinfo"]["storeno"]}'
但是为了明确的选择,您应该明确设置列名称
由于表中有两个colleagueid
refs
,因此您需要JOIN
colleague
表两次才能获取这两列的名称。
查询应为:
SELECT refs_id, branchno, colleagueid, colleague2id, datestamp,
c1.name AS colleague1name, c2.name AS colleague2name,
outcome_id, o.outcome
FROM refs
JOIN colleague c1 ON c1.colleague_id = refs.colleagueid
JOIN colleague c2 ON c2.colleague_id = refs.colleague2id
JOIN outcome o ON o.outcome_id = refs.outcome
WHERE branchno ='{$_SESSION["branchinfo"]["storeno"]}'
然后,PHP 可以访问名称:
$row['colleague1name']
$row['colleague2name']
唯一应该考虑的另一件事是上面的查询容易受到SQL注入攻击,因此应该实现使用MySQLi或PDO的预准备语句。