有没有办法使用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)
]
答案 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更改为创建新用户时