首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限制每个职类员额的10项记录

限制每个职类员额的10项记录
EN

Stack Overflow用户
提问于 2015-06-01 02:57:51
回答 1查看 1.3K关注 0票数 3

我有两个表categoriesposts,我不想得到每个类别的所有记录。我想从每个类别中得到有限的行。

categories表如下:-

  1. ID
  2. 名字
  3. 弹状物

posts表如下:-

  1. ID PK
  2. 标题
  3. 弹状物
  4. 内容
  5. 类别密钥-外键
  6. publish_date

我想要实现的是,我想从posts获得10张category的记录。

我目前正在做的事情是如此危险,以至于它运行了大量的查询,我想将它最小化为1个查询。

代码语言:javascript
复制
<?php

    $fetchCat = $mysqli->query("SELECT * from categories");
    while($row = $fetchCat->fetch_assoc()) {
        $fetchPost = $mysqli->query("SELECT id, title, slug from posts where category=".$mysqli->real_escape_string($row['id'])." limit 10");
        // Processing my code.
    }
?>

我能有一些"inner join“查询,它可以将我的查询减少到1-2个查询,并获得与上面相同的结果吗?

我希望每个类别都有10篇文章要被获取。将来,我可能有40-45个职类,而每个职类,平均来说,我可能有80-90个职位。当从上述方法获取40-45个类别的所有帖子时,可以在过山车上使用我的应用程序。因此,我需要一些可行的方法,我可以限制我的帖子记录每40-45个类别。

这不是简单的内部连接,我在这里获取帖子,但这实际上限制了每个父表的内部连接记录的显示。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-01 07:30:08

我终于在2查询中找到了解决方案。几乎没有什么改善。

第一个查询,我运行类别并将它们存储在一个数组中。

代码语言:javascript
复制
$cat_array = array();
$fetchCat = $mysqli->query("SELECT * from categories");
while($rowCat = $fetchCat->fetch_assoc()) {
   // Category processing....
}

第二个查询,我遇到post,使用group_concatSUBSTRING_INDEX获取每个类别的10记录。

代码语言:javascript
复制
$post_array = array();
$fetchPost = $mysqli->query("select category, 
             SUBSTRING_INDEX(group_concat(id), ',', 10) as post_id, 
             SUBSTRING_INDEX(group_concat(title), ',', 10) as post_title, 
             SUBSTRING_INDEX(group_concat(slug), ',', 10) as post_slug from posts 
             group by category;");

while($rowPost = $fetchPost->fetch_assoc()) {
    $post_array[ $rowPost['category'] ] [id] = $rowPost['post_id'];
    $post_array[ $rowPost['category'] ] [title] = $rowPost['post_title'];
    $post_array[ $rowPost['category'] ] [slug] = $rowPost['post_slug'];
}

2查询和所有必需的数据categories表数据,10 posts表数据来自每个类别

我不得不为post_idpost_titlepost_slug做一些爆炸,并在我的应用程序中使用它。

现在,为任何类别获取所有标题和片段的列表,这很简单,例如,对于id“1”类,我所要做的就是:-

代码语言:javascript
复制
$post_array[1][id]  // Returns all post_id associated with category 1.

非常感谢@billynoah为我指明了“分组智能”方向,"AsConfused“通过我的查询并告诉我,还有命令analyze table posts

谢谢

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30565021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档