【发布时间】:2017-10-23 00:26:06
【问题描述】:
我尝试使用 ONE 查询将表连接到具有列名 => 列值的子数组中..
短表(1)“用户”结构与数据:
user_id email ...
1 xxx@xx.xx ...
2 yyy@yy.yy ...
短表(2)“users_permissions”结构与数据:
user_id plugin_enter offers_view ...
1 1 0 ...
2 1 1 ...
如果我使用经典方法 - 左加入
SELECT `uperms`.*, `u`.*
FROM (`users` as u)
LEFT JOIN `users_permissions` as uperms ON `u`.`user_id` = `uperms`.`user_id`
我得到经典输出
[0] = array(
'user_id' => 1,
'email' => xxx@xx.xx,
'plugin_enter' => 1,
'offers_view' => 0
),
[1] = array(
'user_id' => 2,
'email' => yyy@yy.yy,
'plugin_enter' => 1,
'offers_view' => 1,
...
),
我只需要像这样输出到子数组中:
[0] = array(
'user_id' => 1,
'email' => xxx@xx.xx,
'permissions => array(
'plugin_enter' => 1,
'offers_view' => 0
),
),
...
这可能与 ONE 查询有关吗?
Table2(权限)包含大约 60 列。如果仅与 Table1 连接一行,是否可以使用列值 CONCAT 列的名称?
【问题讨论】:
-
我认为这在 php 中仅针对一个查询是不可能的
-
将 table2 更改为 uid、name、value 之类的内容,以避免 60 列和无法维护查询。
标签: php mysql join left-join concat