我有三张 table ; 文章
、喜欢
和分享
。我想要获取(比如 50 篇)个人观点、点赞和分享次数最多的文章。这将作为一个查询,根据这三个条件获取热门文章。
我将在下面描述简化的表结构:
文章
+----+-----------+-------+
| id | title | views |
+----+-----------+-------+
| 1 | Article 1 | 92 |
| 2 | Article 2 | 14 |
| 3 | Article 3 | 39 |
| 4 | Article 4 | 87 |
| 5 | Article 5 | 8 |
+----+-----------+-------+
喜欢
+----+-----------+
| id | articleID |
+----+-----------+
| 1 | 2 |
| 2 | 3 |
| 3 | 2 |
| 4 | 5 |
| 5 | 3 |
| 6 | 3 |
+----+-----------+
分享
+----+-----------+----------+
| id | articleID | type |
+----+-----------+----------+
| 1 | 1 | facebook |
| 2 | 3 | facebook |
| 3 | 1 | twitter |
| 4 | 4 | twitter |
| 5 | 2 | facebook |
+----+-----------+----------+
我不确定获取热门文章的最佳公式。每篇文章的浏览量始终占主导地位,这意味着如果我将总浏览量、喜欢和分享添加到一个汇总值中,结果或多或少取决于最高浏览量:
[0] => "Article 1"
[1] => "Article 4"
[2] => "Article 3"
[3] => "Article 2"
[4] => "Article 5"
我的问题是;如何根据这三个条件做出最佳的“趋势查询”?
更新
我正在寻找的公式是基于观看次数、点赞次数和分享次数的总体百分比值。例如,第 1 条具有以下百分比值:
Views: 38.33% // Article's views divided by all articles' combined views (92 / 240)
Likes: 0% // Article's likes divided by all articles' combined likes (0 / 6)
Shares: 40% // Article's likes divided by all articles' combined shares (2 / 5)
Total: 78.33 // Calculation: 38.33 + 0 + 40
第 1 条的“趋势点”为 78.33。对所有文章执行此操作应提供以下结果:
[0] => "Article 3" // 86.25
[1] => "Article 1" // 78.33
[2] => "Article 2" // 59.16
[3] => "Article 4" // 56.25
[4] => "Article 5" // 19.99
如何进行这样的 MySQL 查询?
最佳答案
观看次数总是可以预测的,因此我建议您跟踪观看次数的点赞和分享百分比。
关于MySQL 查询 - 如何从其他表中获取基于 "views"、 "likes"和 "shares"的趋势行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42598400/