PROBLEM
unknown
mysql
2 years ago
2.3 kB
8
Indexable
t.AddQuery("DELIMITER // \
BEGIN \
DECLARE v_rec_id, completions, v_tier INT; \
DECLARE v_rank INT DEFAULT 0; \
DECLARE calculated_points, default_points, wr, pr DOUBLE; \
DECLARE done INT DEFAULT FALSE; \
DECLARE cur CURSOR FOR SELECT record_id, time FROM records ORDER BY time ASC; \
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; \
OPEN cur; \
SELECT COUNT(*) INTO completions FROM records WHERE map_id = in_map_id AND run_type = in_run_type AND run_id = in_run_id AND class = in_class; \
IF in_class = 0 \
THEN \
SELECT soldier_tier INTO v_tier FROM map_info WHERE map_id = in_map_id AND run_type = in_run_type AND run_id = in_run_id; \
ELSEIF in_class = 1 \
THEN \
SELECT demoman_tier INTO v_tier FROM map_info WHERE map_id = in_map_id AND run_type = in_run_type AND run_id = in_run_id; \
END IF; \
SELECT pts INTO default_points FROM points WHERE tier = v_tier; \
loop_through_rows:LOOP \
FETCH cur INTO v_rec_id, pr; \
IF done THEN \
LEAVE loop_through_rows; \
END IF; \
SET v_rank = v_rank + 1; \
IF v_rank = 1 \
THEN \
SET wr = pr; \
SET calculated_points = default_points + ((default_points * ((wr / pr) * 1.5)) * 1.3) + completions; \
ELSE \
SET calculated_points = default_points + ((default_points * ((wr / pr) * 1.5)) / 1.3) + completions * 0.75; \
END IF; \
UPDATE records SET `records`.`rank` = (SELECT v_rank), `records`.`points` = (SELECT calculated_points), time = 1.23456 WHERE record_id = v_rec_id; \
END LOOP; \
CLOSE cur; \
END \
DELIMITER ;");Editor is loading...
Leave a Comment