2016-03-01 56 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 ;