2016-03-01 40 views
1

我有两个表:一个是名称,另一个是通过nameID连接的评级。我想从收视表中的数据中找到平均评分,并将结果填入场地表中的相应场地。我不知道如何继续。关于如何使用MySQL做到这一点的任何指针?MySQL使用其他列的数据填充列的计算平均值

+1

您可以先向我们展示您的确切表结构,最好是使用数据。 –

+1

是否有任何理由存储这些数据?您如何计划保持更新的计算平均值?触发器? – Shadow

+0

表1:场地|地址| AvgRating表2:查看|评分| VenueId。审查表中有审查场地的数据。我正在尝试决定如何以及在哪里添加该场地的avgRating。存储数据的原因是能够搜索累积平均值。对于数据来说,这与餐厅的评论类似,并且希望显示所有评论的平均值。 –

回答

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 ;