我有3個數據表。從其他數據表中選擇平均評分
在條目數據表中我有條目ID(entryId作爲主鍵)。
我有另一個名爲EntryUsersRatings的表中有多個條目具有entryId字段和評級值(從1到5)。 (對於一個entryId,評分存儲多次)。 列:ratingId(主鍵),entryId,等級(整數值)。
在第三個數據表中,我翻譯了第一個表中的條目(帶有entryId,languageId和title - translation)。
我想要做的是從第一個數據表中選擇所有條目及其標題(按語言ID)。 最重要的是,我希望存儲在EntryUsersRatings中的每個條目(可以存儲多次)的平均評分。
我已經試過這樣:
SELECT entries.entryId, EntryTranslations.title, AVG(EntryUsersRatings.rating) AS AverageRating
FROM entries
LEFT OUTER JOIN
EntryTranslations ON entries.entryId = EntryTranslations.entryId AND EntryTranslations.languageId = 1
LEFT OUTER JOIN
EntryUsersRatings ON entries.entryId = EntryUsersRatings.entryId
WHERE entries.isDraft=0
GROUP BY title, entries.entryId
isDraft是隻是一些這意味着條目不與存儲所需的所有信息(只是不完整的數據 - 不相關的爲我們的情況在這裏)。
任何幫助將不勝感激。
編輯:我的解決方案給了我空值爲評級。 Edit1:這個查詢工作正常,我正在查找錯誤的數據庫。 我們也來到了另一種解決方案,這給了我們同樣的結果(我希望有人會發現這很有用):
SELECT entries.entryId, COALESCE(x.EntryUsersRatings, 0) as averageRating
FROM entries
LEFT JOIN(
SELECT rr.entryId, AVG(rating) AS entryRating
FROM EntryUsersRatings rr
GROUP BY rr.entryId) x ON x.entryId = entries.entryId
究竟是怎麼了? – Flo
您發佈的查詢有什麼問題?任何錯誤?不是理想的結果? –
哦,我忘了提到這一點。 我的解決方案的評級始終爲空。 – CyberHawk