我目前正在我的网站上创建一个论坛部分,我有一个类别页面,可以在表格中显示您可以发布的不同类别。该表的一列是"最近的主题"柱。该表由while循环组成,遍历我的类别数据库表中的每个类别。我的问题是,while循环不断输出每个主题,只是重用它已经显示的类别。 这是代码:
$sql = "SELECT categories.cat_id, categories.cat_name, categories.cat_description, topics.topic_id, topics.topic_subject, topics.topic_date, topics.topic_cat FROM categories LEFT JOIN topics ON topics.topic_cat = categories.cat_id";
$query = $DB_con->prepare($sql);
$query->execute();
if (!$query) {
echo 'No categories found.';
} else {
echo '<table class="table">
<tr>
<th>Category</th>
<th>Last Topic</th>
</tr>';
while($catRow = $query->fetch(PDO::FETCH_ASSOC)) {
echo '<tr>';
echo '<td>';
echo '<h3><a href="category.php?id=' . $catRow['cat_id'] . '">' . $catRow['cat_name'] . '</a></h3>' . $catRow['cat_description'];
echo '</td>';
echo '<td>';
echo '<a href="topic.php?id=' . $catRow['topic_id'] . '">' . $catRow['topic_subject'] . '</a> on ' . substr($catRow['topic_date'],0,-8);
echo '</td>';
echo '</tr>';
}
echo '</table>';
}
?>
正如我之前所说,该表会多次显示相同的类别,以便它可以显示已发布的每个主题。我只希望每个类别在该类别中显示最新主题一次。
我希望有人可以帮助我。如果不够清楚,请告诉我。感谢。
答案 0 :(得分:0)
如果我理解你的问题,也许你应该改变你的疑问:
更新:
SELECT categories.cat_id
,categories.cat_name
,categories.cat_description
,topics.topic_id
,topics.topic_subject
,T1.topic_date
,T1.topic_cat
FROM categories
LEFT JOIN (SELECT topic_cat, MAX(topic_date) AS topic_date
FROM topics
GROUP BY topic_cat) AS T1 ON T1.topic_cat = categories.cat_id
LEFT JOIN topics ON T1.topic_cat = topics.topic_cat AND T1.topic_date=topics.topic_date