我正在尝试获取一个包含来自三个表的信息的数组。结果应该是一个数组,我可以在其中循环遍历第一个表、第二个表的相关行以及第三个到第二个的相关行。目前,我有三个单独的 SQL 查询,然后将它们重组为一个数组。
也许有人可以帮助我了解查询这些表以获取以下数组的最佳方法。我目前有三个查询 - 每个表一个。使用 mysql JOIN 是一个非常简单的查询,但是我在将它安排回数组时遇到了问题。
我正在考虑使用 mysql JOIN 以更少的查询获得相同的结果,但实际上我想知道这是否很好甚至可能。我将在表格的大致大小上添加数字。
让我给你一些细节:
桌子
courses(4000 rows)
course_id----course_date
groups(50 000 rows)
group_id----group_size----group_course_id
users(200 000 rows)
user_id----user_name----user_group_id
所需数组的示例:
[0] => Array('courseinfo' =>
Array('course_id' => 1234,
'course_date' => '2012-08-12')
'groups' =>
Array( [0] => Array('group_id' => 345,
'group_size' => 3,
'group_course_id' => 1234,
'users' => Array([0] => Array('user_id' => 456,'user_name' => Pete Cabrinha, 'user_group_id = '345'),
[1] => Array('user_id' => 336,'user_name' => John Smith, 'user_group_id = '345'))
[1] => Array('group_id' => 345,
'group_size' => 3,
'group_course_id' => 1234,
'users' => Array([0] => Array('user_id' => 456,'user_name' => Pete Cabrinha, 'user_group_id = '1234'),
[1] => Array('user_id' => 336,'user_name' => John Smith, 'user_group_id = '1234'))))
希望不要太复杂,注意 course_id 和 group_course_id 之间的关系以及 group_id 和 user_group_id 之间的关系。
这是我目前查询方式的一小部分:
$data = $courses = $read->read_courses();
$i = 0;
foreach($courses as $course)
{
if($data[$i]['groups'] = $read->read_groups($course['course_id']))
{
$j = 0;
foreach($data[$i]['groups'] as $group)
{
$data[$i]['groups'][$j]['users'] = $read->read_users($group['group_id']);
$j++;
}
}
else {$data[$i]['groups'][0] = array(); $data[$i]['groups'][0]['users'] = array();}
$i++;
}
最后是我想使用的 JOIN ......
SELECT
course.course_id,
course.course_date,
groups.group_id,
groups.group_course_id,
groups.group_size,
user.user_name
FROM course
LEFT JOIN groups
ON course.course_id = groups.group_course_id
LEFT JOIN user
ON groups.group_id = user.user_group
希望有人可以在这里帮助我,或者让我朝着正确的方向前进 - 甚至想出一个更好的主意。