1

こんにちは、mySQL クエリで問題が発生しています。私のテーブルと現在のクエリを親切に見てください。

表「インストラクター」

---------------------------------------------
id |firstname |     lastname    | subject_id|
---------------------------------------------
1    Juan         Dela Cruz            1
2    Antonio      Brigada              2
--------------------------------------------

表「件名」

---------------
id |   name   |
---------------
1    English
2    Math
3    Science
--------------

私の現在のクエリ

public function instructor(){
global $database;

$sql = "SELECT instructors.firstname as firstname, instructors.lastname as lastname ";
$sql .= "FROM subjects ";
$sql .= "JOIN instructors ";
$sql .= "WHERE subjects.id = instructors.subject_id";

$result = $database->query($sql);

while($instructor = $database->fetch_array($result)){
    if (isset($instructor['firstname']) && isset($instructor['lastname'])){
            return $instructor['lastname'] . " " . $instructor['firstname'];
    } else {
        return "N/A";
    }

    }
}

結果:

English    Juan Dela Cruz
Math       Juan Dela Cruz
Science    Juan Dela Cruz

編集

現在のSQL:

public function instructor(){
global $database;

$sql = "SELECT  a.name, ";
$sql .= "COALESCE(CONCAT(b.firstname, ' ',b.lastname), 'N/A') as ins_name ";
$sql .= "FROM subjects a ";
$sql .= "LEFT JOIN instructors b ";
$sql .= "ON a.id = b.subject_id";

$result = $database->query($sql);

   while($instructor = $database->fetch_array($result)){
      return $instructor['ins_name'];
   }
}

結果

English    Juan Dela Cruz
Math       Juan Dela Cruz
Science    Juan Dela Cruz

あるべき姿:

English    Juan Dela Cruz
Math       Antonio Brigada
Science    N/A

インストラクター()関数の呼び出し

<?php foreach($subjects as $subject): ;?>
  <tr class="subject_list">
    <td><?php echo $subject->name; ?></td> // This will show all subjects
    <td><?php echo $subject->instructor(); ?></td> // This will show instructor foreach subjects
  </tr>
<?php endforeach; ?>

上記の結果を見るために誰かが私を助けてくれることを願っています。

4

1 に答える 1

3

LEFT JOINあなたが必要なものです

SELECT  a.name, 
        COALESCE(CONCAT(b.firstName, ' ',b.LastName), 'N/A')
FROM    subjects a
        LEFT JOIN instructors b
            ON a.ID = b.Subject_ID
于 2012-11-12T07:17:43.083 に答える