データベースからさまざまな列を選択していますが、クエリは次のようになります。
SELECT st.* , u.username creator, COUNT(DISTINCT se.sentenceid) AS sentences,
COALESCE(SUM(v.vote), 0) score,
GROUP_CONCAT(se.text ORDER BY se.sentenceid SEPARATOR ' ') text
FROM stories st
JOIN sentences se ON st.storyid = se.storyid
LEFT OUTER JOIN votes v ON st.storyid = v.storyid
LEFT OUTER JOIN users u ON st.creatorid = u.userid
GROUP BY st.storyid
LIMIT 30
このクエリは、スコア以外のすべてで機能します。出力されるスコアは、文の数に実際のスコアを掛けたものです。私votes
のテーブルは次のようになります。
+---------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+------------+------+-----+---------+-------+
| userid | int(11) | YES | MUL | NULL | |
| storyid | int(11) | NO | MUL | NULL | |
| vote | tinyint(4) | NO | | NULL | |
+---------+------------+------+-----+---------+-------+
vote
1または-1のいずれかの値が含まれます。
実際のスコアを受け取るようにクエリを変更するにはどうすればよいですか?