如何在JOIN查询结果中识别不同表中同名的字段?

发布于 2024-09-28 03:43:38 字数 417 浏览 6 评论 0原文

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

这是我到目前为止的查询:

从用户 usr 中选择 usr.id、usg.id 左连接 (user_groups usg) ON (usg.id=usr.group_id)

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

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

I'm running a query in MYSQL using LEFT JOIN to get users and their user groups. Both tables have columns named id. My result is being returned in an array (PHP) so that I have one array with all field data, but also only one array["id"].

Here's my query so far:

SELECT usr.id, usg.id FROM users usr
LEFT JOIN (user_groups usg) ON
(usg.id=usr.group_id)

Now the easy solution would be to rename the fields to unique names like usr_id and usg_id but I prefer not to. I would much rather have my values returned to the array as array["usr.id"] automatically.

(I'm using the CodeIgniter framework which automatically does the rest, but I could rewrite some stuff there if only MySQL could return the table alias with it)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

走野 2024-10-05 03:43:38

使用“as”关键字

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

use the 'as' keyword

select table1.id as table1Id, table2.id as table2Id
from table1
join table2
on somecondition
长安忆 2024-10-05 03:43:38

只需告诉 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)

或使用学说本身执行 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

just tell mysql that you want to do an on the fly rename using "as 'newname'"

SELECT usr.id as 'user_id', usg.id FROM users usr LEFT JOIN (user_groups usg) ON (usg.id=usr.group_id)

or using doctrine itself do it DQR style:

$resultArray = Doctrine_Query::create()
                        ->select('usr.id, usg.id')
                        ->from('users usr')
                        ->leftJoin('usr.user_groups usg')
                        ->setHydrationMode(Doctrine::HYDRATE_ARRAY)
                        ->execute();

this should return an array where you can access both id's like that:

$resultArr['id']; //for accessing the usr.id

and eiter one of these both depending on the association you made between users and 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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文