php - 如何连接多个表,返回第一个表(file_id),第二个表是file_list(file_no)?

标签 php mysql

我正在尝试连接两个表。第一个表名为“returned”,带有字段(file_id),第二个表名为“file_list”。两个表字段 'file_id' 和 'file_no' 共享相同的值。

文件列表

+---+---------+------------------+-------+
|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>

最佳答案

由于您只需要返回表中的文件状态,您可以使用以下查询:

$sql = "SELECT * 从返回 WHERE file_id = ". $result["file_no"];

我假设第一个查询从 file_list 表返回行。

当您需要在一个查询中从多个表中获取数据时,Inner Join 非常有用。

如果您仍想使用 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>

关于php - 如何连接多个表,返回第一个表(file_id),第二个表是file_list(file_no)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56643279/

相关文章:

mysql - SQL "Replace Into"删除我的一些行

无法通过将数据库文件夹复制到数据文件夹来恢复 MySQL 数据库

mysql - Hibernate 无法映射 MySQL varchar(255)

javascript - 提交表单时在模态上显示错误

php - json_encode utf8

php - NuSoap - 如何在 nusoap_client PHP 中使用本地现有的 WSDL 文件

php - 需要一个简单的 Web 服务器来在本地主机上测试 PHP、DJango

mysql - 选择一个表中的所有项目,并检查另一个表中是否有对应的项目

php - Symfony 3 - 无法加载类型表单类型

mysql - Laravel 数据库缓存