4

クラスのリストを出力するwhileループがあります。クラスデータベースでは、教師名はユーザーデータベースの教師IDによって決定されます。

これが私のデータベース構造です。

Classes Database
-----------------------------
ID       CLASS              TEACHER
1        product design     3

User Database
-----------------------------
ID       NAME
3        John Doe

したがって、クラスをリストするときは、「3」を「JohnDoe」に変換する必要があります。

これは私の現在のコードです:

<?php 
  $classdetails = mysql_query("SELECT * FROM class");
  while($class = mysql_fetch_array($classdetails)) {
    $marklist_class = $class['class'];
    $marklist_teacher = $class['teacher']; //This is a userid                                   

    //------Somewhere here i need to get the userid and look it up in the user database
    if($marklist_class=="") {

    } else {
      echo $marklist_class . ' ' . $marklist_teacher;}
    }
  }
?>

別のmysqlクエリをそこに置くだけではパフォーマンスが低下することを理解しており、お勧めできません。そのため、whileループにクエリを追加せずに、すべての行のユーザーデータベースを検索するにはどうすればよいでしょうか。

ありがとうございました。

4

3 に答える 3

5

結合クエリを使用して、必要なすべての情報を一度に取得できます。次に、アプリケーションでそれを並べ替えて、それに応じて表示できます。例えば

SELECT Classes.class, Users.Name
FROM Classes JOIN Users on Classes.Teacher = Users.ID
于 2012-06-06T15:55:02.277 に答える
1

mysqlでJOINを使用したいとします。

SELECT * FROM class c JOIN user u ON u.ID = c.TEACHER
于 2012-06-06T15:55:21.027 に答える
0

最初のクエリでJOINを使用できます。

Select c.id, c.class, c.teacher, u.name from class c join user u on u.id = c.teacher

これにより、Classのすべての列と、Userの一致した教師名の列がすべて1つのクエリで返されます。

于 2012-06-06T15:56:15.593 に答える