[英]SQL multiple JOIN to the same column
我有3张桌子
结果表
outcome_id,结果
参考表
refs_id, branchno, colleagueid, colleague2id, 日期戳
同事表
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而不是 ID 号码?
抱歉,如果格式不正确,这是我的第一篇文章。
您需要两个同事表连接(使用别名 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"]}'
但为了明确选择,您应该明确设置列名
由于refs
表中有两个colleagueid
s,您需要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']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.