2
私のジレンマは、チェスのゲームでユーザーの合計スコアを把握しようとしています。その特定のユーザは、白いユーザまたは黒いユーザとしてプレーすることができる。コードは次のとおりです:PL/SQLでユーザースコアを取得
create table user(
u_id int,
u_name varchar(50),
u_grade int,
u_rating int,
primary key (u_id));
create table competition(
c_id int,
c_name varchar(255),
c_date date,
primary key (c_id));
create table matchup(
b_id int,
c_id int,
turn int,
x_pid int,
y_pid int,
x_score number,
y_score number,
primary key(b_id,c_id,turn),
foreign key(c_id) references competition,
foreign key(x_pid) references user,
foreign key(y_pid) references user);
insert into matchup values(1,1,1,1,2,0,1);
insert into matchup values(2,1,1,3,4,0.5,0.5);
insert into matchup values(11,1,1,5,6,1,0);
insert into matchup values(12,1,1,7,8,0,1);
insert into matchup values(1,1,2,2,3,0,1);
insert into matchup values(2,1,2,4,1,1,0);
insert into matchup values(11,1,2,8,5,1,0);
insert into matchup values(12,1,2,6,7,0.5,0.5);
私たちの目的のために、1はBobのu_idです。彼がy_pidとしてプレーしたときに彼がx_pid +としてプレーしたときに得た得点に基づいてボブの合計得点を計算するにはどうすればよいですか?ここに私がこれまでに持っていたことがあります。
CURSOR c1 IS SELECT (SUM(x_score) + SUM(y_score)) AS total_score FROM matchup JOIN user u1 ON matchup.y_pid = u1.u_id
JOIN user u2 ON matchup.x_pid = u2.u_id JOIN competition ON matchup.c_id = competition.c_id WHERE
(u1.u_name = 'Bob' OR u2.u_name = 'Bob') AND commpetition.c_name = 'Wonderland';
このクエリは、私が試したすべてのユーザー、つまり2番目のユーザーに同じ出力を与えているようです。何が間違っているのですか?ボブにとっては、彼が何のゲームにも勝たなかったので合計得点は0になるはずです(0得点は無勝利です、0.5は引き分け得点、1は勝利点です)
ねえコンスタンチンは、説明と私のクエリを削減していただきありがとうございます。正しい答えを選んでください。あなたも同様に気にしないなら、私の質問をupvoteしてください:) –