我正在尝试将我的两个表left join
在一起,并且在 ON
之后仅使用一个条件时它可以工作,但是当我尝试添加第二个条件时,我不要从 firstname
和 lastname
列中获取任何信息。我一直在这里查看其他答案,从我所看到的情况来看,我所做的一切都是正确的,所以我无法弄清楚为什么它不起作用..
这是我的尝试:
$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>';
}
这是它的输出:
如您所见,当使用多个条件时,它不会从教师表返回任何结果,这是为什么?
编辑:
我的数据库中的类(class)表:
我的数据库中的教师表:
我想要的期望结果:
最佳答案
看来你需要加入 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/