3つのテーブルの情報を含む配列を取得しようとしています。結果は、最初のテーブル、2番目の関連する行、3番目から2番目の関連する行までループする配列です。現時点では、私は3つの別々のSQLクエリーを持っています。そして、それらは1つの単一の配列に改造されます。この結果配列の高速/簡単なクエリ
誰かが、以下の配列を取得するためにこれらのテーブルを照会する最良の方法のアイデアを手伝ってくれるかもしれません。私は現在、各テーブルに1つずつ、3つのクエリを取得しています。 mysql JOINでは簡単なクエリですが、配列に戻すのに問題があります。
私は、少ないクエリで同じ結果を得るためにmysql JOINを使用することを考えていますが、実際にはそれがとても良いかどうかはまったく疑問です。テーブルのおおよそのサイズに数値を追加します。
私はあなたにいくつかの詳細を与えることを許可しなさい:
TABLES
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
誰かが私をここに役立つことを願って、または正しい方向に私を入れてください - あるいはさらに良いアイデアを思いついてください。
実際には、1年間のコースのすべての予約を一度に表示したいだけです。私はいつも額を1ヶ月に制限し、その後facebook-timeline-styleを再クエリします。 – Anonymous
@DanSurfriderその場合は、一度に1か月にクエリを記録するレコードを絶対に制限する必要があります。回答の編集を参照してください。 – Sylverdrag