我正在使用LEFT JOIN在MYSQL中运行查询以获取用户及其用户组。两个表都有名为id的列。我的结果是以数组(PHP)返回,因此我有一个包含所有字段数据的数组,但也只有一个数组[“id”]。
到目前为止,这是我的查询:
SELECT usr.id,usg.id FROM users usr LEFT JOIN(user_groups usg)ON (usg.id = usr.group_id)
现在,简单的解决方案是将字段重命名为usr_id和usg_id等唯一名称,但我不愿意。我宁愿让我的值自动返回数组作为数组[“usr.id”]。
(我正在使用CodeIgniter框架自动完成剩下的工作,但如果只有MySQL可以用它返回表别名,我可以重写一些东西)
答案 0 :(得分:2)
使用'as'关键字
select table1.id as table1Id, table2.id as table2Id
from table1
join table2
on somecondition
答案 1 :(得分:0)
告诉mysql你想使用“as'newname'”进行动态重命名
SELECT usr.id as 'user_id', usg.id FROM users usr LEFT JOIN (user_groups usg) ON (usg.id=usr.group_id)
或使用doctrine本身做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
并根据您在用户和user_groups之间建立的关联
来选择其中一个$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