查询具有多个值但在具有相同列的不同 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
我知道标题什么都不懂。但是不知道怎么定义比较好
我会详细解释我的问题。
我有 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