Я хочу генерировать случайные весы игроков, основанные в лиге, в которой они играют. У меня есть эта работа, когда был только один союзник (который был майейн-лигой, взвешивающей за лигу), но Я хочу включить MinLeagueWeighting так, чтобы он начинался с этого числа, а не 0.Как выбрать между минимальным и максимальным диапазоном
Мне просто нужна помощь по оператору select в функции scarlar, чтобы иметь возможность случайного выбора игрока, взвешивающего между минимальным значением и максимальное значение:
Ниже приведена процедура league_insert для определения максимального и минимального веса за лигу:
UPDATE League
SET MaxLeagueWeight =
(
CASE
WHEN LeagueID = 1 THEN 90
WHEN LeagueID = 2 THEN 80
WHEN LeagueID = 3 THEN 70
WHEN LeagueID = 4 THEN 85
WHEN LeagueID = 5 THEN 90
ELSE 0
END
),
MinLeagueWeight =
(
CASE
WHEN LeagueID = 1 THEN 50
WHEN LeagueID = 2 THEN 40
WHEN LeagueID = 3 THEN 30
WHEN LeagueID = 4 THEN 45
WHEN LeagueID = 5 THEN 50
ELSE 0
END
)
Ниже представлен вид для выполнения случайной:
CREATE VIEW Random
AS
SELECT RAND() RandValue
Ниже функция scarlar, что нужно выбрать игрок взвешивания для каждого игрока между самой низкой и самой высокой возможной лиги взвешивания (это, где я думаю, исправление необходимо):
CREATE FUNCTION [dbo].[fn_PlayerWeighting]
(
@MaxPlayerWeighting INT,
@MinPlayerWeighting INT
)
RETURNS INT
AS
BEGIN
DECLARE @playerWeight INT
SELECT @playerWeight = ROUND(((@MaxPlayerWeighting - 0 - 1) * (SELECT RandValue FROM Random) + 0), 0)
RETURN @playerWeight;
END
Ниже функция обновляется и отмеченными:
UPDATE Player
SET PlayerWeighting = dbo.fn_PlayerWeighting (l.MaxLeagueWeight, l.MinLeagueWeight)
FROM Player p
INNER JOIN Team t
ON t.TeamID = p.TeamID
INNER JOIN League l
ON l.LeagueID = t.LeagueID
SELECT dbo.fn_PlayerWeighting (l.MaxLeagueWeight, l.MinLeagueWeight)
FROM Player p
INNER JOIN Team t
ON t.TeamID = p.TeamID
INNER JOIN League l
ON l.LeagueID = t.LeagueID
Вам не нужен вид. Вам просто нужно обработать свой RAND в функции fn_PlayerWeighting. Вот несколько отличных сведений о том, как сохранить значение RAND между диапазонами, которые вы хотите. http://blog.sqlauthority.com/2007/04/29/sql-server-random-number-generator-script-sql-query/ – scsimon