在MySQL中按率排序

时间:2013-07-04 08:14:40

标签: php mysql rate

在我的数据库中有2个表:

产品表:

---------------
 id  |  title
---------------
 1     Toyoto
 2     Lexux

评级表:

----------------------------------------
rating_id  | rating | id | ip
----------------------------------------
     1          l      1    127.0.0.1
     2          d      1    127.0.0.2
     3          l      1    192.168.0.1
     4          l      2    192.168.0.1
-----------------------------------------

所以Toyoto有2 l(喜欢)和1 d(不喜欢)。所以我想根据喜欢和不喜欢对所有产品进行排序(总结喜欢和不喜欢)。在最后一个输出中将是:

Toyouto 3 votes and  Lexux 1 vote.

订单:

1. Toyoto
2. Lexux

1 个答案:

答案 0 :(得分:1)

SELECT
  products.title
FROM
  products INNER JOIN ratings
  ON products.id = ratings.id
GROUP BY
  products.id,
  products.title
ORDER BY
  SUM(ratings.rating='l')-SUM(ratings.rating='d')

请参阅小提琴here

如果您还想显示排名,可以使用:

SELECT @rank:=@rank+1 as rank, title
FROM (
  SELECT
    products.title
  FROM
    products INNER JOIN ratings
    ON products.id = ratings.id
  GROUP BY
    products.id,
    products.title
  ORDER BY
    SUM(ratings.rating='l')-SUM(ratings.rating='d')
  ) s, (SELECT @rank:=0) r

小提琴是here