Php 通过主题id获取讲师姓名
大家好,我的mySQL查询有问题。请查看我的表格和当前查询 表“讲师” 表“主题” 我当前的查询Php 通过主题id获取讲师姓名,php,mysql,Php,Mysql,大家好,我的mySQL查询有问题。请查看我的表格和当前查询 表“讲师” 表“主题” 我当前的查询 public function instructor(){ global $database; $sql = "SELECT instructors.firstname as firstname, instructors.lastname as lastname "; $sql .= "FROM subjects "; $sql .= "JOIN instructors "; $sql .= "W
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
调用讲师()函数
//这将显示所有主题
//这将显示每个科目的讲师
我希望任何人都能帮助我看到上面的结果。
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
合并?这看起来是一个非常直接的一对一关系。@Starx甚至我的第一个查询都不起作用:(@Starx,因为这在约翰的回答中是一个例子,而不是一对一,这就是问题所在。合并是为了得到N/A。@arjay0601如何在php中调用讲师函数,因为它从一行返回一列,但结果显示两列和多行。@marvin post更新为调用我的讲师()作用
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; ?>
SELECT a.name,
COALESCE(CONCAT(b.firstName, ' ',b.LastName), 'N/A')
FROM subjects a
LEFT JOIN instructors b
ON a.ID = b.Subject_ID