【发布时间】:2012-05-13 01:57:22
【问题描述】:
假设我有一个名为 students 的表,其中包含所有学生的列表。每个学生可以有许多课程存储在另一个表中,由学生 ID 标识。
我想做一个查询,该查询将从学生表中获取包含学生信息的行,并在一个查询中获取他的所有课程。我想要的输出是这样的:
Array
(
[0] => Array
(
[id] => 5
[firstName] => Bob
[lastName] => Smith
[email] => ....
[courses] => Array
(
[0] => Array
(
[id] => 30
[name] => Test Course
[price] => 400
)
[1] => Array
(
[id] => 30
[name] => Test Course 2
[price] => 300
)
)
)
)
要获取学生的信息,我会执行以下查询:
SELECT * FROM students WHERE something ='something'
要为学生获取课程,我会这样做:
SELECT * FROM courses WHERE studentId = '5'
是否可以同时执行两个查询并获得类似上述数组的输出,还是我必须遍历每个学生并获取其课程,然后手动将其附加到数组?
【问题讨论】:
-
我认为
group_concat可能会有所帮助。链接:dougboude.com/blog/1/2009/12/… -
您是否正在寻找 SQL 语法或编码以进入您的数组格式?
-
我认为这更像是一个 PHP 问题而不是 SQL 问题。 mySQL 将始终返回一个表,而不是您想要的嵌套结构。