Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在MySQL中按喜欢/不喜欢排序评论_Php_Mysql_Sql - Fatal编程技术网

Php 如何在MySQL中按喜欢/不喜欢排序评论

Php 如何在MySQL中按喜欢/不喜欢排序评论,php,mysql,sql,Php,Mysql,Sql,在我的网站上,人们可以对评论竖起或竖起大拇指。 为此,我使用两个表: $sql = "CREATE TABLE content ( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), content TEXT NOT NULL, date date, time time )"; 及 评级中存储的数据如下所示: Comment ID like/dislike user IP 1 l 86.

在我的网站上,人们可以对评论竖起或竖起大拇指。 为此,我使用两个表:

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

评级中存储的数据如下所示:

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语句来按评论的喜欢程度排序非常困难


如果有人对如何做到这一点有任何想法,我们将不胜感激。

类似的方法会奏效

select content.text, count(*) likes
from content join ratings on content.id = ratings.id
group by context.text
order by likes

如果将like存储为整数而不是字母,则会更容易

我用一个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

你说的每句话都是对的,但是这个问题指定了喜欢的数量,而不是总体评分。@DanBracuk好吧,总体评分是喜欢减去不喜欢的总和。通过从查询中删除
ELSE-1
,它只会将喜欢的加起来,而忽略不喜欢的聪明人!工作得很有魅力!我只是调整它来计算喜欢的数量,而不是整体评分!非常感谢:)
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