如何联接多个表,返回第一个表(file_id),第二个表为file_list(file_no)?

时间:2019-06-18 06:52:40

标签: php mysql

我正在尝试合并两个表。第一个表的名称为“ 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>

1 个答案:

答案 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>
相关问题