gpt4 book ai didi

php - 从类别中选择最新主题(SQL 和 PHP)

转载 作者:可可西里 更新时间:2023-11-01 08:10:02 25 4
gpt4 key购买 nike

我希望能够通过 SQL 查询选择发布到某个类别的最新主题。

我有两个表要使用。

  • 类别
  • 主题

主题行知道它属于哪个类别,因为 topics.topic_cat 应该与 categories.cat_id 匹配。

我想遍历所有类别并显示发布到它们的最新主题。它看起来像这样。

while($row = $result->fetch_assoc()) {
echo $row['cat_name'] . ' Latest Post is ' . $row['topic_name'];
}

这将是执行后的样子的示例。

category1 Latest Post is "latest post"
category2 Latest Post is "latest post"
category3 Latest Post is "latest post"

等等……

我可以使用什么 SQL 查询来选择它?

这是我的表结构。

类别

  • cat_id
  • 猫的名字
  • 猫的描述

主题

  • 主题编号
  • 主题名称
  • 主题日期
  • 主题猫
  • 主题作者

最佳答案

更新

这是一个更高效的查询,可以获得相同的结果。它会执行得更好,因为子查询与外部查询不相关(不使用任何数据)

SELECT cat_name, topic_name, latest as topic_date 
FROM categories c
LEFT JOIN (
SELECT topic_name, topic_cat, MAX(topic_date) latest
FROM topics
GROUP BY topic_cat
) as t
ON c.cat_id = t.topic_cat

Live demo

您询问了 LEFT JOINJOIN:第一个意味着如果任何类别没有主题,您仍然希望它包含在结果中。主题名称和日期将为 nullJOIN 表示您希望结果仅包含具有匹配主题的类别。因此,您可以根据自己的喜好更改我的任一查询。

原始答案

这是你需要的:

SELECT c.cat_name, t.topic_name, t.topic_date 
FROM categories c
LEFT JOIN topics t ON c.cat_id=t.topic_cat
WHERE topic_date = (
SELECT MAX(t2.topic_date)
FROM topics t2
WHERE t2.topic_cat = t.topic_cat
)

此查询将仅返回每个类别的最新主题。每个结果都有字段:

cat_name | topic_name | topic_date

执行完查询后,您可以按需要运行循环:

while($row = $result->fetch_assoc()) {
echo $row['cat_name'] . ' Latest Post is ' . $row['topic_name'];
}

Live demo

关于php - 从类别中选择最新主题(SQL 和 PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38625215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com