这是一个 select 语句,用于计算我数据库中歌曲的平均评分。
SELECT *, (tab.rating_sum/tab.rating_count) as rating_average FROM
(SELECT song_id, COUNT(rating) rating_count, SUM(rating) rating_sum FROM ratings
GROUP BY song_id) tab
INNER JOIN SONGS WHERE SONGS.id = tab.song_id
我需要在RATINGS表中插入列rating_average到SONGS表中,当在RATINGS中插入新的评分时。我还需要确保它被插入到正确的song_id列中。如何使用触发器实现此功能?我已经快被搞疯了。
这是我能想到的最好的方法,但我不知道如何使用触发器:
CREATE TRIGGER rating_trig ON ratings FOR INSERT AS
BEGIN
UPDATE SONGS SET
rating = SELECT (tab.rating_sum/tab.rating_count) as rating_average FROM
(SELECT song_id, COUNT(rating) rating_count, SUM(rating) rating_sum FROM ratings
GROUP BY song_id) tab
INNER JOIN SONGS WHERE SONGS.id = tab.song_id
END
表格布局:
评分 | 歌曲ID,评分,用户名 歌曲 | ID,评分,歌曲名称