我在 mysql db.Table_1 和 Table_2 中有两个表,我使用以下代码在 HTML 中显示整个表:
<table>
<?php
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "database";
$results = null;
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT * FROM Table_1");
$stmt->execute();
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
$results = $stmt->fetchAll();
}
catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conn = null;
?>
<table>
<thead>
<tr>
<th>Name</th>
<th>Address</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<?php foreach($results as $key=>$row) { ?>
<tr>
<td><?php echo $row['Name'];?></td>
<td><?php echo $row['Address'];?></td>
<td><?php echo $row['Email'];?></td>
</tr>
<?php } ?>
</tbody>
</table>
</table>
现在我想在这个 HTML 表格中再添加一列,其中的数据将来自 Table_2。在这个 Table_2 中,将为 Table_1 中的单个帖子插入多个评论。
我正在使用查询语句查询帖子的最新评论:
SELECT comment FROM Table_2 WHERE id = (SELECT id
FROM Table_2 WHERE post_id = 10 ORDER BY id DESC LIMIT 1)
这里我们指定 post_id = 10 但是当我使用 SELECT * FROM Table_1"来显示 table_1 中的所有数据时,我应该如何指定显示 table_2 中该特定帖子的最新评论
表一结构:
+-------+---------+---------+---------+
| id | Name | Address | Email |
+-------+---------+---------+---------+
| 1 | ABC | ABC | ABC |
| 2 | DEF | DEF | DEF |
+-------+---------+---------+---------+
表 2 结构:
+-------+-------------+---------+
| id | Table_1_id | Comments|
+-------+-------------+---------+
| 1 | 1 | X |
| 2 | 1 | Y |
| 3 | 2 | Z |
+-------+-------------+---------+
要显示的 HTML:
+---------+---------+---------+---------+
| Name | Address | Email | Comments|
+---------+---------+---------+---------+
| ABC | ABC | ABC | Y |
| DEF | DEF | DEF | Z |
+---------+---------+---------+---------+
提前致谢。
最佳答案
如果您想获取所有帖子及其最新评论,则可以使用以下查询:
SELECT
Name,
Address,
Email,
finalTable.comment
FROM
Table_1
INNER JOIN
(
SELECT
comment,
Table_1_id
FROM Table_2
INNER JOIN
( SELECT
MAX(id) latest_comment_id
FROM Table_2
GROUP BY Table_1_id ) latestComments
ON Table_2.id = latestComments.latest_comment_id
) finalTable
ON finalTable.Table_1_id = Table_1.id;
它会给出如下输出结果:
+---------+---------+---------+---------+
| Name | Address | Email | Comments|
+---------+---------+---------+---------+
| ABC | ABC | ABC | Y |
| DEF | DEF | DEF | Z |
+---------+---------+---------+---------+
注意:如果您想要所有帖子,我指的是那些还没有任何评论的帖子,请将 INNER JOIN
替换为 LEFT JOIN
关于php - 显示 mysql 表中的所有数据以及第二个表中的附加信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35619974/