私は、次の表に含まれているMySQLデータベースがあります。そのように見えますMySQLは、サブ配列に2つの関連テーブルをフェッチ
Student
テーブル:
|------------------------------------|
| studentId | studentName | school |
|------------------------------------|
| 1 | Student A | 1 |
| 2 | Student B | 2 |
| 3 | Student C | 2 |
|------------------------------------|
そしてSchool
テーブル:
|------------------------------|
| schoolId | schoolName | desc |
|------------------------------|
| 1 | School A | ... |
| 2 | School B | ... |
| 3 | School C | ... |
|------------------------------|
を
PHPを使用して、私はすべての生徒の配列を取得し、それらの学校情報をサブ配列に含めようとしています。
Array
(
[0] => Array
(
[studentId] => 1
[studentName] => Student A
[school] => Array
(
[schoolId] => 1
[schoolName] => School A
[desc] => ...
)
)
[1] => Array
(
[studentId] => 1
[studentName] => Student A
[school] => Array
(
[schoolId] => 1
[schoolName] => School A
[desc] => ...
)
)
[2] => Array
(
[studentId] => 1
[studentName] => Student A
[school] => Array
(
[schoolId] => 1
[schoolName] => School A
[desc] => ...
)
)
)
私はこの
$studentsResult = $conn->query("SELECT * FROM STUDENT");
$studentsArray = $studentsResult->fetch_all(MYSQLI_ASSOC);
$finalArray = array();
foreach ($studentsArray as &$student) {
$schoolSQL = "SELECT * FROM SCHOOL WHERE schoolId = ".$student['schoolId'];
$schoolResult = $conn->query($schoolSQL);
$schoolArray = $schoolResult->fetch_all(MYSQLI_ASSOC);
unset($student['schoolId']);
$student['school'] = $schoolArray[0];
$finalArray[] = $student;
}
echo '<pre>'; print_r($finalArray);
を行うことであることを達成することができました。しかし、私はこの方法は、私はすべての学生をループして実行していますので、大規模なデータベースのための最も効率的だとは思いません学校行を取得するためのクエリ。
私はSQLだけを使ってすべてを行うことができますか?
よう
何かが同じ行に一緒に学校の情報や学生の情報を取得するために 'JOIN'を使用してください。次に、現在のようにループして同様の操作を実行してサブアレイを作成します。 –