【问题标题】:How to get records ordered by rating desc如何获取按等级描述排序的记录
【发布时间】:2017-01-28 10:49:16
【问题描述】:

我有两张桌子,即宿舍和评级。如何通过两个表的评分显示记录顺序。请问您对此有何想法

|------------------------------|------------------------------------|
|       hotel table is         |      rating table is               |
|------------------------------|------------------------------------|
|post_id  | user_id  | hostel  |r_id |  user_id | post_id  | rating |
|   1     |     2    |  xyz    |  2  |   2      |   1      |   5    |
|   3     |     4    |  abc    |  4  |   4      |   1      |   3    |
|   5     |     6    |  ijk    |  5  |   6      |   6      |   4    |
|   6     |     7    |  pqr    |  6  |   7      |   6      |   5    |
|   8     |     8    |  mno    |  7  |   8      |   5      |   5    |
---------------------------------------------------------------------

【问题讨论】:

  • 请添加您的表名和查询
  • 该编辑使您免于大量反对票。无论如何我认为你只需要order by rating desc
  • 实际上有一些条件例如:如果 post_id 是 10,12 那么 10 有 20 个用户给出 5 个评分和 5 个用户给出 3 个评分,对于 12 有 5 个用户给出 5 个评分和20 位用户在此评分中获得 3 分,显示顺序应与获得 5 分的最高用户相同,即 20 位用户获得 5 分排在第一位

标签: php mysql


【解决方案1】:

试试下面的查询:

$query = "SELECT * FROM hotel inner join rating ON hotel.post_id = rating.post_id ORDER BY rating.rating DESC";

【讨论】:

  • 实际上有一些条件例如:如果 post_id 是 10,12 那么 10 有 20 个用户给出 5 个评分和 5 个用户给出 3 个评分,对于 12 有 5 个用户给出 5 个评分和20 位用户在此评分中获得 3 分,显示顺序应与获得 5 分的最高用户相同,即 20 位用户获得 5 分排在第一位
【解决方案2】:

类似这样的:

select *
from hotel h join rating r
using (post_id, user_id)
order by rating desc;

【讨论】:

    【解决方案3】:
    $query = "SELECT * FROM hotel_table 
    LEFT JOIN rating_table ON hotel_table.post_id = rating_table.post_id 
    ORDER BY rating_table.rating DESC";
    

    试试这个

    【讨论】:

    • 实际上有一些条件例如:如果 post_id 是 10,12 那么 10 有 20 个用户给出 5 个评分和 5 个用户给出 3 个评分,对于 12 有 5 个用户给出 5 个评分和20 位用户在此评分中获得 3 分,显示顺序应与获得 5 分的最高用户相同,即 20 位用户获得 5 分排在第一位
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多