PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了从类别中选择最新主题(SQL和PHP)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

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

我有两个要使用的表.

>类别
>主题

主题行知道它属于哪个类别,因为topic.topic_cat应该与category.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
> cat_name
> cat_description

主题

> topic_id
> topic_name
> topic_date
> topic_cat
> topic_by

解决方法:

更新资料

这是一个更有效的查询,可为您提供相同的结果.它将执行得更好,因为子查询与外部查询不相关(不使用任何数据)

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 JOIN与JOIN:第一种方法意味着,如果任何类别都没有主题,那么您仍然希望它包含在结果中.主题@L_772_20@和日期将为空. JOIN表示您希望结果仅包含具有匹配主题的类别.因此,您可以根据自己的喜好更改我的任何一个查询.

原始答案

这是您需要的:

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

大佬总结

以上是大佬教程为你收集整理的从类别中选择最新主题(SQL和PHP)全部内容,希望文章能够帮你解决从类别中选择最新主题(SQL和PHP)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: