繁体   English   中英

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

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

我知道标题什么都不懂。 但是我不知道如何更好地定义它。

我将进一步解释我的问题。

我有2张桌子。 内部具有以下值的:

姓名表:战斗

 res1 res2 winner
    225 552 552

在第二张表中,我有:

姓名表:战士

ID  name
225 example 1
552 example 2

ID和res 1 res2赢家是一样的东西。

如何构造表以显示名称而不是ID?

通常,我总是使用内部联接,但是我从未在同一字符串中找到更多的值。

谢谢回复。

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

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;

您需要具有三个表战斗机别名才能获得所需的输出。 请参阅以下查询:

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)      

希望这可以帮助!

无需参加三场比赛,因为获胜者将永远是两个对手之一,因此您只需要进行一次案例分析:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM