php - 在 mySql LEFT JOIN 语句中使用多个 ON 条件不起作用

标签 php mysql

我正在尝试将我的两个表left join 在一起,并且在 ON 之后仅使用一个条件时它可以工作,但是当我尝试添加第二个条件时,我不要从 firstnamelastname 列中获取任何信息。我一直在这里查看其他答案,从我所看到的情况来看,我所做的一切都是正确的,所以我无法弄清楚为什么它不起作用..

这是我的尝试:

$stmt = 'SELECT courses.*, teachers.firstname, teachers.lastname ';
$stmt .= 'FROM courses LEFT JOIN teachers ON ';
$stmt .= 'courses.main_teacher = teachers.id AND courses.secondary_teacher = teachers.id';

$prep_stmt = $db->prepare($stmt);
$prep_stmt->execute();

while ($db_row = $prep_stmt->fetch(PDO::FETCH_ASSOC)) {
    echo '<tr>';
    echo '<td class="info-cell">' . $db_row['name'] . '</td>';
    echo '<td class="info-cell">' . $db_row['curriculum_url'] . '</td>';
    echo '<td class="info-cell">' . $db_row['rating_criteria'] . '</td>';
    echo '<td class="info-cell">' . $db_row['firstname'] . ' ' . $db_row['lastname'] . '</td>'; //Echoes main_teacher
    echo '<td class="info-cell">' . $db_row['firstname'] . ' ' . $db_row['lastname'] . '</td>'; //Echoes secondary_teacher
    echo '<td class="info-cell">' . $db_row['for_programme'] . '</td>';
    echo '<td class="info-cell">
              <button class="small-btns"><img src="../includes/img/edit.png"></button>
          </td>';
    echo '<td class="info-cell">
              <button class="small-btns"><img src="../includes/img/delete.png"></button>
          </td>';
    echo '</tr>';  
}

这是它的输出:

left join result

如您所见,当使用多个条件时,它不会从教师表返回任何结果,这是为什么?

编辑:

我的数据库中的类(class)表:

courses table

我的数据库中的教师表:

teachers table

我想要的期望结果:

desired result

最佳答案

看来你需要加入 teachers 2次

select
c.*, 
t1.firstname as main_teacher_firstname, 
t1.lastname as main_teacher_lastname,
t2.firstname as secondary_teacher_firstname, 
t2.lastname as secondary_teacher_lastname
from courses c
left join teacher t1 on t1.id = c.main_teacher
left join teacher t2 on t2.id = c.secondary_teacher

关于php - 在 mySql LEFT JOIN 语句中使用多个 ON 条件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27650494/

相关文章:

javascript - 服务器端事件 - 如何将参数传递给服务器端脚本?附加查询字符串?

php - 向 mysql 循环添加更多条件

javascript - Summernote 图像上传在 codeigniter 中不起作用

java - 在Android中用java代码访问mysql

php - 如何通过数据库中的 Bootstrap 创建动态模态窗口?

php - 使用 PHP 重新排序 mySQL 查询的结果而不执行另一个查询

php - Mysql多行计数?

mysql - 在同一张表上有两个连接的条件 WHERE

mysql - 在mysql中搜索用空值替换空格

php - 将表中的每个类别回显到其自己的 DIV 中