Mysql在同一张表上的多个左连接
Posted
技术标签:
【中文标题】Mysql在同一张表上的多个左连接【英文标题】:Mysql multiple left joins on same table 【发布时间】:2013-10-23 08:37:39 【问题描述】:我有一个表,其中有两个字段引用另一个表的 ID。我需要从另一个表中提取两个字段的名称。
例如。
表格1 worker1 = 2(2 是其他表的键) 工人2 = 4表2 身份证名称 1 比尔 2弗雷德 3约翰 4 保罗
我需要得到 $worker1name = Fred 和 $worker2name = Paul。
所以我会说这样的话:
SELECT xxx, NAME?, NAME? FROM Table1
LEFT JOIN Table2 AS p1 ON Table1.worker1 = Table2.ID
LEFT JOIN Table2 AS p2 ON Table1.worker2 = Table2.ID
WHERE ...
$table = mysql_query(...);
$rec = mysql_fetch_assoc($table);
$worker1name = $rec['???'];
$worker2name = $rec['???'];
我在最后两个语句中插入什么来获得这两个名称。或者更准确地说,我必须在 SELECT 中添加什么来指定我希望调用表 2 中两个不同版本的 NAME 字段?
【问题讨论】:
【参考方案1】:你也应该像这样给字段起别名:
SELECT
xxx,
p1.NAME as p1name,
p2.NAME as p2name
FROM Table1
LEFT JOIN Table2 AS p1 ON Table1.worker1 = p1.ID
LEFT JOIN Table2 AS p2 ON Table1.worker2 = p2.ID
WHERE ...
【讨论】:
我收到一个错误:无法运行查询:“on 子句”中的未知列“Table2.ID”(我的表中的等效名称) 修改了查询。 (你必须使用别名有没有。)以上是关于Mysql在同一张表上的多个左连接的主要内容,如果未能解决你的问题,请参考以下文章