好的,我需要从多个表中获取一些数据,每个表都有一个键。
项目(密钥id) Projects_users (key:project_id,user_id)用户(密钥id)
基本上每个项目可以有N个用户。我需要得到一个格式化的响应在每个项目中的所有用户。
例如:
projects = {[
1: {
'title':'Project 1',
'users': [
1: { id: 23, name:'john' },
2: { id: 55, name:'sally' }
]
}
2: {
'title':'Project 2',
'users': [
1: { id: 41, name:'jeff' },
2: { id: 55, name:'sally' }
]
}
]}此外,我知道我可以在PHP中使用多条MYSQL语句来完成此任务。这样做会不会更快,用PHP进行连接,或者让MYSQL做这件事会更高效/更快。
发布于 2011-11-12 04:13:22
您可以使用以下语句来获取所需的数据:
SELECT `Projects`.*, `Users`.* FROM
`Projects` JOIN (
`Projects_users` JOIN
`Users`
ON `Projects_users`.`user_id` = `Users`.`id`
)
ON `Projects`.`id` = `Projects_users`.`project_id`
ORDER BY `Projects`.`id`之后,您可以在单次遍历中遍历结果表并构建所需的数组。
发布于 2011-11-12 04:06:11
我还没有试过,但它应该和你想要的很接近:
select p.title, u.name
from projects p inner join users u
on p.id = u.id
order by p.title您需要“连接”来获取数据..但是使用PHP对其进行格式化。
PS:"projects“是一个表,"users”是第二个表……"projects“表需要保存用户ID 23、55和41的”外键“。
发布于 2011-11-12 04:06:34
MySql不能像您所希望的那样以树状结构返回数据。您可以通过两种方式完成此操作:
如果您需要有关内连接的帮助,它将类似于:
select p.title, u.id, u.name
from projects p
inner join project_users pu on pu.project_id=p.id
inner join users u on u.id=pu.user_idhttps://stackoverflow.com/questions/8099272
复制相似问题