2

すべての学生のリストを含む、学生というテーブルがあるとします。各学生は、学生 ID で識別される別のテーブルに格納された多くのコースを持つことができます。

私は、学生の情報を含む学生テーブルから行を取得し、1 つのクエリですべてのコースを取得するクエリを実行したいと考えています。私が望む出力は次のようなものです:

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'

両方のクエリを一度に実行して、上記の配列のような出力を取得することは可能ですか?それとも、各学生をループしてコースを取得し、手動で配列にアタッチする必要がありますか?

4

3 に答える 3

1
$query = "select * from students inner join courses on studentID = '5' where something  = 'something'"; 
$result = mysql_db_query ($dbname, $query, $link); 
$id = $row[0]; # corresponding to row in students database
$firstName= $row[1]; # corresponding to row in students database
$lastName = $row[2]; # corresponding to row in students database
$email = $row[3]; # corresponding to row in students database
while($row = mysql_fetch_array($result)) {
  echo 'id: '.$row[id];
  echo '<br>';
  echo 'name: '.$row[name];
  echo '<br>';
  echo 'price: '.$row[price];
  echo '<br>';
}
于 2012-05-12T17:28:03.770 に答える
1

これを行うには、テーブルを結合します。

select s.*, c.*
from students s join
     courses c
     on s.studentid = c.studentid
where s.something = 'something'

ある行に学生情報を、別の行にコースを表示したい場合、それは不可能です。すべての行に同じ列が必要です。

于 2012-05-12T17:24:53.357 に答える
1

基本的に新しいコードは次のようになります。

$query = "select * from students"; 
$result = mysql_db_query ($dbname, $query, $link); 
while($row = mysql_fetch_array($result)) {
   $id = $row[0]; # corresponding to row in students database
   $firstName= $row[1]; # corresponding to row in students database
   $lastName = $row[2]; # corresponding to row in students database
   $email = $row[3]; # corresponding to row in students database
   echo 'id: '.$id;
   echo '<br>';
   echo 'firstName: '.$firstName;
   echo ' ';
   echo 'lastName: '.$lastName;
   echo '<br>';
   echo 'email: '.$email;
   echo '<br>';
   $query = "select * from courses where id  = '".$id."'"; 
   $result2 = mysql_db_query ($dbname, $query, $link); 
   while($row2 = mysql_fetch_array($result2)) {
     echo 'name: '.$row2[1]; # corresponding to row in courses database
     echo '<br>';
     echo 'price: '.$row2[2]; # corresponding to row in courses database
     echo '<br>';
   }
}
于 2012-05-12T17:57:22.327 に答える