php-使用MYSQL列出具有最新注释/活动的类别
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-使用MYSQL列出具有最新注释/活动的类别,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2380字,纯文字阅读大概需要4分钟。
内容图文
我正在开发一个网站,用户可以在其中发布评论,并对每个评论进行分类.我有一个页面,用户可以在其中浏览网站上所有类别的列表,并在其中发布最新的5条评论.
我需要从数据库检索的信息是:
>类别列表
>每个类别中有5条评论
这就是我现在所拥有的(简化为基本的PHP):
echo "<ul>";
$query = mysql_query("SELECT * FROM categories");
while($result = mysql_fetch_assoc($query)){
echo "<li><h2>{$result['category_name']}</h2>";
$query_comments = mysql_query(
"SELECT * FROM comments WHERE ".
"category_id = '{$result['id']}' ".
"ORDER BY created_at DESC LIMIT 5");
while($result_comments = mysql_fetch_assoc($query_comments)){
echo "{$result_comments['username']} wrote {$result_comments['text']} on {$result_comments['created_at']}<br>";
}
echo "</li>";
}
echo "</ul>";
看起来像这样(假设我的类别是“水果”名称)
Apple Jay wrote blah blah blah - August 5, 2009 Bob wrote hello hello hello - August 5, 2009 Tom wrote super super - August 5, 2009 Edward wrote no no no - August 5, 2009 Kaysie wrote super no! - August 5, 2009 Orange Cassie wrote ye ye ye ye - August 5, 2009 Alfonce wrote whoohoo - August 5, 2009 Arthur wrote love oranges - August 5, 2009 Alice wrote yes yes yes - August 5, 2009 Xavier wrote Lorem ipsum dolor sit amet - August 5, 2009 Strawberry Chris wrote Lorem ipsum dolor sit amet - August 5, 2009 Hubert wrote Lorem ipsum dolor sit amet - August 5, 2009 Martin wrote Lorem ipsum dolor sit amet - August 5, 2009 Lyon wrote Lorem ipsum dolor sit amet - August 5, 2009 Paris wrote Lorem ipsum dolor sit amet - August 5, 2009 Blueberry etc...
问题是,如果类别很多,我将遇到性能问题,尤其是如果有很多使用该网站的用户.
我正在努力寻找减少所需查询量的方法.有谁知道我该怎么做?
更新,我尝试将类别表与评论表一起加入,但是,我没有找到一种方法来限制每个类别的评论数量,因为如果我使用LIMIT 5,它只会限制返回的评论数量.
解决方法:
我和一个数据库专家谈过,事实证明在MySQL中有点痛苦.
这样的事情在PostgreSQL中会很好地工作:
SELECT * FROM categories
LEFT JOIN comments ON categories.id = comments.category_id
WHERE comments.id IS NULL OR
comments.id IN ( SELECT id FROM comments AS a2 WHERE categories.id = a2.category_id ORDER BY id DESC LIMIT 5 )
不幸的是,MySQL在子查询中不支持LIMIT.他挠了挠头,说有一个解决方法,但是听起来不太好.到那时,我认为您也可以使用多个查询.如果是性能问题,则可能是您临时缓存的数据.
对不起,帮不上忙:)
错误的旧答案:尝试在查询中使用LEFT JOIN,左侧带有类别(因此,无论是否有注释,所有类别都会被返回),而右侧是注释表.这会将其简化为一个查询.
内容总结
以上是互联网集市为您收集整理的php-使用MYSQL列出具有最新注释/活动的类别全部内容,希望文章能够帮你解决php-使用MYSQL列出具有最新注释/活动的类别所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。