我知道标题不明白。但我不知道如何更好地定义它。
我会解释更多我的问题。
我有2张桌子。其内部具有以下值:
名表:战斗
res1 res2 winner
225 552 552
在第二张表中我有:
名表:战士
ID name
225 example 1
552 example 2
ID和res 1 res2获胜者也是一样。
我应该如何构建表格,以便显示名称而不是ID?
通常情况下,我总是使用内连接,但我没有发现自己有更多值到同一个字符串。
感谢您的回复。
答案 0 :(得分:0)
你会多次加入。这对初学者来说很棘手,因为它需要表别名:
select f1.name as name1, f2.name as name2, fw.name as winner
from battle b join
fighters f1
on b.res1 = f1.id join
fighters f2
on b.res2 = f2.id join
fighters fw
on b.winner = fw.id;
答案 1 :(得分:0)
你需要有三个表战士别名来获得所需的输出。请参阅以下查询:
Select f1.name as Fighter-1,
f2.name as Fighter-2,
f3.name as Winner
From
battel b,
fighters f1,
fighters f2,
fighters f3
Where
b.res1 = f1.id AND
b.res2 = f2.id AND
b.winner = f3.id AND
(f1.id = 225 OR f2.id=225)
希望这有帮助!
答案 2 :(得分:0)
没有必要进行三次加入,因为获胜者永远是两个对手之一,所以你只需要做一个案例:
res1 res2 winner
225 552 2
为了避免插入或更新未参与此游戏的获胜者的任何潜在问题,您可以将获胜者编号更改为一个简单的标记(1或2),表明谁赢了:
temp=A[j+1]; // stores A[j+1] in temp
A[j]=A[j+1]; // stores A[j+1] in A[j] - the value in A[j] is lost
A[j]=temp; // stores temp in A[j]