0

私のウェブサイトでは、コメントを高く評価したり、低く評価したりできます。これを行うには、2つのテーブルを使用します。

$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ステートメントを作成するのが非常に難しいことです。

誰かがこれを行う方法について何かアイデアがあれば、それは大いにありがたいです。

4

2 に答える 2

2

いいねを文字ではなく整数として保存すると簡単になります。

ケースステートメントを使用していいねを合計し、コメントでグループ化しました。

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
于 2013-02-16T18:13:35.853 に答える
0

このようなものが機能します

select content.text, count(*) likes
from content join ratings on content.id = ratings.id
group by context.text
order by likes
于 2013-02-16T18:08:42.983 に答える