[英]SQL select: summ all ratings for setups from users. Multiple setupratings in one table (SQL FIDDLE included)
我正在嘗試運行sql select,但是每次嘗試時,我都知道我絕對不是為此而做的。
我的設置如下。
我有2張桌子。 一個供游戲玩家使用,例如存儲名稱,另一個供用戶(用戶表不重要)投票支持游戲玩家的設置(設置表也不重要)。
因此,在評分表中,存儲了哪個用戶為哪個gamersetup(均帶有ID)投票,該用戶給了多少分以及他對哪個設置進行了投票,因為玩家可以進行多種設置。
我在這里為您創建了一個SQL Fiddle。
現在,我試圖獲取所有設置的列表(注意不同的設置),按等級排序(在此很重要,SUM()除以對該設置投票的用戶數)
我嘗試了類似的方法,但是當然不起作用。 SELECT sum(gsr.gsr_rating),gsr.gsr_setup_id FROM gamersetupratings gsr JOIN gamer as g ON g.gamer_id = gsr.gsr_rated_id WHERE gsr_rated_id =(從游戲玩家中選擇gamer_id)
我和我的朋友失敗了,也許你們有更多的技能。
感謝您的寶貴時間,我非常感謝。
在yoru SQLFIDDLE中,子選擇出現錯誤。如果需要更多內容,則可以使用in子句(或聯接)進行匹配
SELECT sum(gsr.gsr_rating)
, gsr.gsr_setup_id
FROM gamersetupratings gsr
JOIN gamer as g ON g.gamer_id=gsr.gsr_rated_id
WHERE gsr_rated_id in (SELECT gamer_id FROM gamer)
否則,如果您需要單行用於子選擇,則可以使用限制1
SELECT sum(gsr.gsr_rating)
, gsr.gsr_setup_id
FROM gamersetupratings gsr
JOIN gamer as g ON g.gamer_id=gsr.gsr_rated_id
WHERE gsr_rated_id = (SELECT gamer_id FROM gamer order by gamer_id limit 1)
但是您不需要子選擇,您無需擁有條件連接所需的值
SELECT sum(gsr.gsr_rating)
, gsr.gsr_setup_id
FROM gamersetupratings gsr
JOIN gamer as g ON g.gamer_id=gsr.gsr_rated_id
這應該為您提供不同的游戲ID,以及每個游戲的平均評分。 除非我誤解了,否則我認為您應該只尋找每個gsr_setup_id的平均值。
SELECT COUNT(gsr_setup_id) as timesVotedFor,
AVG(gsr_rating) as rating,
GSR_SETUP_ID as setupID
FROM gamersetupratings
GROUP BY gsr_setup_id
ORDER BY rating desc;
您將通過以下查詢獲得所需的結果。
SELECT sum(gsr.gsr_rating) as gsr_rating, gsr.gsr_setup_id,
sum(gsr.gsr_rating) /count(gsr.gsr_rated_id) as sorting_value
FROM
gamersetupratings gsr
JOIN gamer as g
ON g.gamer_id=gsr.gsr_rated_id
Group by gsr.gsr_setup_id
Order by sorting_value desc
如果您願意,可以order by
子句直接放置sum(gsr.gsr_rating)/count(gsr.gsr_rated_id)
值,但是為了更好地理解問題,我只是這樣輸入
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.