通过输出作为单个数组加入和分组

时间:2016-06-09 18:02:44

标签: php sql arrays join

有没有办法使用mysql和sql server使用单个查询将表和组结果连接为单个数组

假设我有两个表user和user_jobs

用户:

user_id   username
-------  ----------
 1        user1
 2        user2

user_jobs:

user_id  job   place designation
 ------  ---- ------ ---

1         job1    p1     d1
1         job2    p2     d2
1         job3    p3     d3

select * from user join user_jobs on user.user_id = user_jobs.user_id

我会得到三行查询结果。无论如何要加入这些表并将结果输出为一个数组?

预期产出: -

[
  username:user1,
  user_id:1,
  job:array(jobs),
  place:array(place),
  designation:array(designation)
]

1 个答案:

答案 0 :(得分:1)

您可以尝试使用此类GROUP_CONCAT并使用php explode将该结果(以逗号分隔的列表转换为数组)。

select user.username,user.user_id,
       GROUP_CONCAT(job) as jobs,
       GROUP_CONCAT(place) as place,
       GROUP_CONCAT(designation) as designation 
from user join user_jobs on user.user_id = user_jobs.user_id
GROUP BY user_id,user_name

UDPATE: 如果认为这个问题有一个mysql标签...我猜不是 如果您正在使用SQL Server, 你可以尝试

SELECT user.username,user.user_id,
       job, place, designation
from user join user_jobs on user.user_id = user_jobs.user_id
ORDER BY user.username,user.user_id

然后在php中让它遍历返回的结果集,构建用于作业,地点,指定的数组,当user_id更改为创建新用户时