【问题标题】:Mysql multiple left joins on same tableMysql在同一张表上的多个左连接
【发布时间】: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 字段?

【问题讨论】:

    标签: php mysql sql left-join


    【解决方案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”(我的表中的等效名称)
    • 修改了查询。 (你必须使用别名有没有。)
    猜你喜欢
    • 2011-10-18
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    • 2015-05-18
    • 2015-07-24
    • 2014-05-08
    • 1970-01-01
    相关资源
    最近更新 更多