[英]How to select the three highest outputs by select sum from other table?
在我當前的 PHP 項目中,我想在我的網站上顯示三個瀏覽次數最多的帖子。
每個帖子的查看次數存儲在不同的表中,就像帖子的一般數據一樣。 在此表中,每天和每個帖子都會輸入每日視圖。
目前我可以從一般的帖子表中獲取所有數據,
$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'];
CREATE TABLE `articles` (
`article_id` int(3) NOT NULL,
`article_category_id` int(3) NOT NULL,
`article_title` varchar(255) COLLATE utf8mb4_german2_ci NOT NULL,
`article_author` varchar(255) COLLATE utf8mb4_german2_ci NOT NULL,
`article_date` date NOT NULL,
`article_content` text COLLATE utf8mb4_german2_ci NOT NULL,
`article_tag` varchar(255) COLLATE utf8mb4_german2_ci NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_german2_ci;
從視圖表中,我只能按 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'];
CREATE TABLE `days_views` (
`view_id` int(11) NOT NULL,
`day` date NOT NULL,
`day_views_count` int(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_german2_ci;
我不知道如何將兩個 SELECTS 一起編寫以使 output 適合。
你可以使用這樣的東西:
SELECT SUM(day_views_count) AS article_views
FROM days_views
WHERE view_id = $article_id
ORDER BY article_views LIMIT 3
您可以使用 agregatd 查詢連接表articles
,該查詢從article_views
中提取三個查看次數最多的view_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_views_count) 的另一個建議將對每個條目的整個列求和,因此它不會正確排序。 我的建議是按計數排序,然后獲得前三名。 它有效嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.