我有两个表:一个是名称,另一个是通过nameID连接的评级。我想从评级表中的数据中找到评级的平均值,并将该结果填充到场地表上的相应场地。我不知道该怎么办。有关如何使用MySQL执行此操作的任何指示?
答案 0 :(得分:0)
这应该有效,但是像其他人一样说从评级表中取平均数可能是一个更好的主意,而不是用触发器更新场地表。因此,这创建了一个更新场地平均评级的程序,该评级从两个触发器调用,用于在评级表上插入和更新。
DELIMITER //
CREATE PROCEDURE updateVenueRating(IN venue_id INT)
READS SQL DATA
BEGIN
update venue AS v
SET v.avgrating =
(select avg(rating)
from ratingtable
where ratingtable.venueid = v.id
)
where v.id = venue_id;
END//
CREATE TRIGGER venue_insert_trigger
AFTER INSERT ON ratingtable
FOR EACH ROW
BEGIN
CALL updateVenueRating(NEW.VenueId);
END//
CREATE TRIGGER venue_update_trigger
AFTER UPDATE ON ratingtable
FOR EACH ROW
BEGIN
CALL updateVenueRating(NEW.VenueId);
END//
DELIMITER ;