我正在開發一個類似Risiko!的遊戲的桌面應用程序,它基於一些數據庫程序。SQL QUERY:如何在表中爲不同的行分配不同的值,以便在另一個表中分配不同的行?
我需要爲每個玩家分配一系列不相等的,分配給其他玩家的行。
我已經試過這樣的事情,但不工作:
`create or replace PROCEDURE "giveterritory"
(idpartita NUMBER,nr_partecipanti number)
is
begin
DECLARE
CURSOR cur_file IS
SELECT *
FROM Player
WHERE idgame = Player.idgame ;
var_cur cur_file%ROWTYPE;
cont number ;
nr_territories_gioc_prec number ;
G1_Terr int ;
G2_Terr int ;
G3_Terr int ;
G1_ID number;
G2_ID number;
G3_ID number;
begin
cont:=0 ;
for var_cur in cur_file
loop
cont := cont + 1 ;
update territory
set Player_owner = var_cur.id_Player
where ROWNUM = MOD(MOD (number_RANDOM(),42) ,ROWNUM);
G1_Terr := var_cur.number_territories_tot ; -- mi salvo i territories del primo Player
G1_ID := var_cur.id_Player ;
end if ;
if (cont=2) then
update territory
set Player_owner = var_cur.id_Player
where ROWNUM = MOD(MOD (number_RANDOM(),42 -G1_Terr) , ROWNUM) and id_territory NOT IN (select Player_owner from territory where ;
G2_Terr := var_cur.number_territories_tot ;
end if ;
if (cont=3) then
update territory
set Player_owner = var_cur.id_Player
where ROWNUM <= 42 - G1_Terr - G2_Terr;
--where ROWNUM <= 42 - var_cur.number_territories_tot * 2 ;
G3_Terr := var_cur.number_territories_tot ;
end if ;
end loop;
end;
end;`
number_random代碼:
create or replace FUNCTION "NUMBER_RANDOM"
return NUMBER
is
numbrndm int;
begin
select dbms_random.value(1,99999999) into numbrndm
from dual;
return numbrndm;
end;
你的問題是什麼?樣本數據和期望的結果將有所幫助。 –
有很多方法可以對事物進行隨機化處理,但發佈結構和一些示例數據會有所幫助。那麼另一個問題是,你真的想要隨機或更多的循環賽,以便你的地區是平衡的? – Matt
平衡和隨機 –