我正在尝试合并两个表。第一个表的名称为“ returned”,具有字段(file_id),第二个表的名称为“ file_list”。两个表字段“ file_id”和“ file_no”共享相同的值。
file_list表
+---+---------+------------------+-------+
|ID | File ID | File Desc. | Status|
+---+---------+------------------+-------+
|8 | 400/3 | 1 - Test 1 400/3 | |
+---+---------+------------------+-------+
返回表格
+---------+-----------------+---------------+-------------+-------------+------------+
| File ID | File NAME | Employee NAME | Date BORROW | Date RETURN |File STATUS |
+---------+-----------------+---------------+-------------+-------------+------------+
| 400/3 | 1 - Test 1 400/3| Syuhada | 2019-06-19 | 2019-06-18 | Returned |
+---------+-----------------+---------------+-------------+-------------+------------+
我正在尝试将状态从返回的表发送到file_list表
while($result=mysqli_fetch_array($query,MYSQLI_ASSOC))
{
?>
<tr>
<td><div align="center"><?php echo $result["id"];?></div></td>
<td><?php echo $result["file_no"];?></td>
<td><?php echo $result["file_desc"];?></td>
<td>
<div align="center">
<?php
/*$file_ID = "SELECT file_no FROM file_list";*/
$sql = "SELECT * From returned
INNER JOIN file_list
ON returned.file_id = file_list.file_no;";
$resultRet = $dbConn->query($sql);
while($rs=$resultRet->fetch_assoc()){
?>
<?php echo $rs["status"]; ?>
<?php
}
?>
</div>
</td>
答案 0 :(得分:1)
由于只需要返回表中的文件状态,因此可以使用以下查询:
$sql = "SELECT * From returned
WHERE file_id = " . $result["file_no"];
我想第一个查询返回 file_list 表中的行。
当需要在一个查询中从多个表中获取数据时,内部联接非常有用。
如果您仍然想使用JOIN,查询将如下所示:
$sql = "SELECT * From returned
INNER JOIN file_list
ON returned.file_id = file_list.file_no AND returned.file_id = " . $result["file_no"] ;
编辑
对于Prepared Statements,只有一段代码显示文件状态(带有或不带有JOIN)。
<td>
<div align="center">
<?php
$sql = "SELECT * FROM returned
WHERE file_id = ?";
$sql_join = "SELECT * FROM returned
INNER JOIN file_list
ON returned.file_id = file_list.file_no AND returned.file_id = ?";
$stmt = $conn->prepare($sql_join);
$stmt->bind_param("i", $result["file_no"]);
$stmt->execute();
$result = $stmt->get_result();
while($rs = $result->fetch_assoc()) {
echo $rs["status"];
}
$stmt->close();
?>
</div>
</td>