我有两个表格:类别和测验
在类别中,我有 : category_id | category_name |
在测验中,我有:quiz_id | quiz_name | quiz_category_id| quiz_duration
正如你所注意到的,quiz_category_id是一个外键引用。
这是我到目前为止的代码:
<table>
<thread>
<tr>
<th>quiz name</th>
<th>quiz category</th>
<th>quiz duration</th>
</tr>
</thread>
<tbody>
<?php foreach (get_all_exam() as $r) { ?>
<tr>
<td><?php echo $r['quiz_name'] ?></td>
<td><?php echo $r['quiz_category_id'] ?></td> // I am getting the id value not the name
<td><?php echo $r['quiz_duration'] ?></td>
</tr>
<?php } ?>
</tbody>
</table>
get_all_exam() 是一个函数,这里是: 这是我进行 sql 查询的地方
function get_all_exam () {
$data = array();
$result = mysql_query("SELECT * FROM `quiz`");
while ($row = mysql_fetch_assoc($result)) {
$data [] = $row;
}
return $data;
}
因此,此刻,它只是打印出来,例如;
|测验名称| |测验类别| |测验时长|
|实践前 | |23| |5分钟|
而不是说 23 我想要它,以便它在相应的表上查找以获取名称
谢谢
SELECT quiz.quiz_name, category.catagory_name, quiz.quiz_duration
FROM quiz LEFT JOIN category
ON (quiz.quiz_category_id = category.category_id)
在 select 语句中,选择您想要的内容,您也可以说SELECT quiz.*, category.*
,但请注意,如果您有相同的字段名称,您可能希望使用 AS
检索一些。
LEFT JOIN
的意思是 - 始终从左表中显示,即使右表中没有值;因此,即使没有相应的category_id,它也会显示quiz_id。 RIGHT JOIN
会反其道而行之。