php - 你如何 ORDER BY 两个表?

标签 php mysql sql

我就是您所说的 MySQL 的“菜鸟”。我可以插入/编辑/选择东西,但比这更高级的东西让我很困惑。我的数据库中有两个表:

表“评论”

id      int(11)
review  varchar(2500)
game    int(11)
user    int(11)
title   varchar(200)`

表“review_rating”

user    int(11)
review  int(11)     // Corresponds to `reviews.id`
like    tinyint(1)

这是我的问题:是否可以在 reviews 表上使用 ORDER BY 来按“like”= 1 的 review_ratings 总数对结果进行排序(其中 'review' = 'reviews' 表的 ID)除以 review_ratings 总数(其中 'review' = 'reviews' 表的 ID)。

示例:

SELECT * 
FROM `reviews` 
WHERE `game` = ? 
ORDER BY (total number of review_ratings where review = reviews.id and like = 1 / 
         total number of review_ratings where review = reviews.id) 
LIMIT 0, 10

最佳答案

SELECT  t.review,
        Score = CASE WHEN TotalReviews<> 0 THEN LikedReviews/TotalReviews ELSE NULL END
  FROM  (
              SELECT    *,
                    (SELECT COUNT(*) FROM review_rating WHERE review = r.review) AS TotalReviews ,
                    (SELECT COUNT(*) FROM review_rating WHERE review = r.review AND like = 1) AS LikedReviews,
              FROM  review r        
             WHERE  game = ?
         )t
ORDER BY t.review, Score

关于php - 你如何 ORDER BY 两个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8596910/

相关文章:

php - 在 WooCommerce 中获取产品类别和标签术语作为元关键字

php - 插入查询后如何基于两个表发送电子邮件?

php - 为什么内置于高级模板中的电子邮件脚本无法正常工作?

mysql - 使用 mysql GROUP_CONCAT 和 WHERE

linux - 从拆分 mysqldump 的内容恢复 mysql 数据库

php - 如何自动删除 Drupal 7.x 中的旧 Feed 项目?

mysql - 对将日期字段与文字进行比较感到困惑

php - 从本地主机上的 PHP 文件访问 MySql 数据库

sql - 如何在同一个表中复制关系记录?

mysql - 如果只有一个结果行,则选择自连接