【发布时间】:2015-08-14 09:53:35
【问题描述】:
我有两个表categories 和posts,我不想获取每个类别的所有记录。我想从每个类别中获取有限的行。
categories 表格如下:-
- 身份证
- 姓名
- 蛞蝓
posts 表格如下:-
- ID [PK]
- 标题
- 蛞蝓
- 内容
- 类别 [键 - 外键]
- 发布日期
我想要实现的是,我想从 posts 为每个 category 获取 10 条记录。
我现在正在做的事情太危险了,它会运行很多查询,我想将其最小化为 1 个查询。
<?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 类别的帖子记录。
这不是简单的内部联接,我在其中获取帖子,但这实际上限制了内部联接记录以显示每个父表。
【问题讨论】:
-
你关心你得到哪 10 只给定的猫 4 只。是否在 slug 列上建立索引?每个 tbl 有多少行
-
你有几类?
-
@Ala 我有大约 12-14 个类别。
-
@AsConfused ,我希望每个类别有 10 条记录。
-
搜索“mysql groupwise limit”。看这里:stackoverflow.com/questions/2129693/…
标签: php mysql sql join inner-join