Php 如何在联接查询结果中识别具有相同名称的不同表中的字段?

Php 如何在联接查询结果中识别具有相同名称的不同表中的字段?,php,mysql,left-join,table-alias,Php,Mysql,Left Join,Table Alias,我正在MYSQL中运行一个查询,使用LEFT JOIN获取用户及其用户组。这两个表都有名为id的列。我的结果以数组(PHP)的形式返回,因此我有一个包含所有字段数据的数组,但也只有一个数组[“id”] 以下是我目前的疑问: 从usr用户中选择usr.id、usg.id 左连接(用户组usg)打开 (usg.id=usr.group\U id) 现在,简单的解决方案是将字段重命名为唯一的名称,如usr_id和usg_id,但我不希望这样。我更希望将我的值作为数组[“usr.id”]自动返回到数组中

我正在MYSQL中运行一个查询,使用LEFT JOIN获取用户及其用户组。这两个表都有名为id的列。我的结果以数组(PHP)的形式返回,因此我有一个包含所有字段数据的数组,但也只有一个数组[“id”]

以下是我目前的疑问:

从usr用户中选择usr.id、usg.id 左连接(用户组usg)打开 (usg.id=usr.group\U id)

现在,简单的解决方案是将字段重命名为唯一的名称,如usr_id和usg_id,但我不希望这样。我更希望将我的值作为数组[“usr.id”]自动返回到数组中

(我正在使用CodeIgniter框架,它会自动完成其余的工作,但是如果MySQL能够返回表别名,我可以在那里重写一些东西)

使用'as'关键字

select table1.id as table1Id, table2.id as table2Id
from table1
join table2
on somecondition

只需告诉mysql您想使用“as'newname”进行动态重命名

或者使用教义本身,采用DQR风格:

$resultArray = Doctrine_Query::create()
                        ->select('usr.id, usg.id')
                        ->from('users usr')
                        ->leftJoin('usr.user_groups usg')
                        ->setHydrationMode(Doctrine::HYDRATE_ARRAY)
                        ->execute();
这将返回一个数组,您可以在其中访问两个id,如下所示:

$resultArr['id']; //for accessing the usr.id
根据用户和用户组之间的关联,选择其中一个

$resultArr['user_groups']['id']; //for accessing the usg.id if it is one to one
$resultArr['user_groups'][0]['id']; //for accessing the usg.id if it is a one to many

我知道这是一个解决方案,但我忘了提到我想避免这种情况,所以它会自动进行这实际上取决于您如何在用户和用户组之间建立关联
$resultArr['user_groups']['id']; //for accessing the usg.id if it is one to one
$resultArr['user_groups'][0]['id']; //for accessing the usg.id if it is a one to many