查询具有多个值但在具有相同列的不同 table 中的多列

Query for multiple column with multiple values but in the different table with same column

我知道标题什么都不懂。但是不知道怎么定义比较好

我会详细解释我的问题。

我有 2 个 table。 A 在其内部具有以下值:

姓名table:战斗

 res1 res2 winner
    225 552 552

第二个table我有:

姓名table:斗士

ID  name
225 example 1
552 example 2

ID和res 1 res2 winner是一样的。

我应该如何构造 table 以显示名称而不是 ID?

通常我总是使用内部连接,但我从来没有发现自己对同一个字符串有更多的值。

感谢您的回复。

您将进行多次联接。这对初学者来说很棘手,因为它需要 table 个别名:

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;

您需要拥有三个 table 战士的别名才能获得所需的输出。请看下面的查询:

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)      

希望对您有所帮助!

不需要三个连接,因为获胜者永远是两个对手之一,所以你只需要做一个 CASE:

select f1.name as name1, f2.name as name2, 
   case when b.winner = b.res1 then f1.name else f1.name end as winner
from battle b 
join fighters f1
  on b.res1 = f1.id
join fighters f2
  on b.res2 = f2.id

为避免在插入或更新未玩此游戏的获胜者时出现任何潜在问题,您可以将获胜者编号更改为一个简单的标志(1 或 2)以指示获胜者:

res1 res2 winner
 225  552      2