Php 如何通过从其他表中选择总和来选择三个最高输出?
在我当前的PHP项目中,我想在我的网站上显示三个浏览量最大的帖子 每个帖子的视图数存储在不同的表中,就像帖子的常规数据一样。在该表中,记录了每天和每篇文章的每日视图 目前我可以从general post表中获取所有数据Php 如何通过从其他表中选择总和来选择三个最高输出?,php,mysql,Php,Mysql,在我当前的PHP项目中,我想在我的网站上显示三个浏览量最大的帖子 每个帖子的视图数存储在不同的表中,就像帖子的常规数据一样。在该表中,记录了每天和每篇文章的每日视图 目前我可以从general post表中获取所有数据 $query = "SELECT * FROM `articles` WHERE `article_category_id` = '1' DESC LIMIT 3"; $most_viewed_post_query = mysqli_query($connection, $que
$query = "SELECT * FROM `articles` WHERE `article_category_id` = '1' DESC LIMIT 3";
$most_viewed_post_query = mysqli_query($connection, $query);
while($row = mysqli_fetch_assoc($most_viewed_post_query)) {
$article_id = $row['article_id'];
$article_categorie = $row['article_category_id'];
$article_title = $row['article_title'];
$article_author = $row['article_author'];
$article_date = $row['article_date'];
从views表中,我只能通过ID得到一篇文章的总数
$query = "SELECT SUM(day_views_count) AS article_views FROM days_views WHERE view_id = $article_id";
$get_article_views = mysqli_query($connection, $query);
$row = mysqli_fetch_array($get_article_views);
$article_views = $row['article_views'];
我不知道如何将这两个选择写在一起,以使输出适合。您可以使用聚合查询将表
文章
连接起来,从文章视图
中提取三个查看次数最多的视图id
中的,如:
select a.*
from articles a
inner join (
select view_id
from article_views
group by view_id
order by sum(day_views_count) desc
limit 3
) v on v.view_id = a.azrticle_id
那么:
select a.*
from articles a
inner join (
select view_id
from article_views
group by view_id
order by day_views_count desc
limit 3
) v on v.view_id = a.article_id
另一个建议是使用sum(day\u views\u count)对每个条目的整个列进行求和,因此无法正确排序。
我的建议是按计数排序,然后取前三名。它能用吗?你可以用这样的东西:
SELECT SUM(day_views_count) AS article_views
FROM days_views
WHERE view_id = $article_id
ORDER BY article_views LIMIT 3
这对我不起作用。在我的结果中,我只得到了datatable的前三个条目,但不是浏览次数最多的条目。幸运的是,我在这里得到了相同的结果
select a.*
from articles a
inner join (
select view_id
from article_views
group by view_id
order by day_views_count desc
limit 3
) v on v.view_id = a.article_id
SELECT SUM(day_views_count) AS article_views
FROM days_views
WHERE view_id = $article_id
ORDER BY article_views LIMIT 3