php - 如何在 MySQL 中按喜欢/不喜欢对评论进行排序

标签 php mysql sql

在我的网站上,人们可以对评论表示赞同或反对。 为此,我使用两个表:

$sql = "CREATE TABLE content
(
id INT NOT NULL AUTO_INCREMENT, 
PRIMARY KEY(id),
content TEXT NOT NULL,
date date,
time time
)";

$sql2 = "CREATE TABLE ratings 
(
rating_id INT AUTO_INCREMENT PRIMARY KEY NOT NULL ,
rating VARCHAR (10) NOT NULL ,
id INT NOT NULL ,
ip VARCHAR (50) NOT NULL
)";

存储在评级中的数据如下:

Comment ID   like/dislike    user IP
1            l               86.42.173.83
1            d               86.42.173.43
2            l               86.42.173.79
2            l               86.42.173.34
2            d               86.42.173.22

我遇到的问题是,我发现创建一个 SQL 语句来按评论的点赞数对评论进行排序非常困难。

如果有人对如何执行此操作有任何想法,我们将不胜感激。

最佳答案

如果将点赞数存储为整数而不是字母,会更容易。

我使用 case 语句添加了点赞数,并按评论分组。

SELECT C.content, 
    SUM(CASE WHEN R.rating = 'l' THEN 1 ELSE -1 END) AS overallRating
FROM content C
LEFT JOIN ratings R ON R.id = C.id
GROUP BY C.content
ORDER BY overallRating

关于php - 如何在 MySQL 中按喜欢/不喜欢对评论进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14913385/

相关文章:

SQL错误: ORA-00907: missing right parenthesis

sql - 在T-SQL 2005中删除之前如何触发触发器?

php - 能见度时间表

php - 选择值早于 60 秒的行

php - 缓慢的PHP进程

sql - where子句postgres中的搜索条件

PHP。如何获得每两个月重复一次的事件?

php - 保护 CSV 文件的 SQL 插入免受 SQL 注入(inject)

java - 在php中将字符串转换为utf-8

php - Yii2中年份大于指定月份,如何获取大于指定年份和月份的记录