0

Players、PlayersArchive、Races の 3 つのテーブルがあります。Players テーブルと PlayersArchive テーブルはまったく同じ構造です。

Players と PlayersArchive には、PlayerID と Name があります。

Races では、1 行に次のように表示されます。

RaceID、Record1PlayerID、Record2PlayerID、Record3PlayerID、Record4PlayerID、および Record5PlayerID

タスクは Races テーブル全体を SELECT することですが、プレイヤー ID フィールドの代わりに名前を返す必要があります。

例えば:

Races table:
RaceID: 1
Record1PlayerID: 2
Record2PlayerID: 1
Record3PlayerID: 0
Record4PlayerID: 0
Record5PlayerID: 0

Players table:
PlayerID: 1
Name: Jhon

PlayersArchive table:
PlayerID: 2
Name: Jack

result:
1     Jack     Jhon     NULL     NULL     NULL
4

2 に答える 2

0

これは、あなたが求めていることに対する可能な解決策を示すだけです。

Select RaceId, p1.Name AS Name1 From Races AS r
Left Join (
    Select * From Players 
    Union Select * From PlayersArchive
) AS p1 On r.Record1PlayerID = p1.PlayerID;

5 つの名前すべてを取得するには、クエリ内でこの左結合をさらに 4 回繰り返す必要があります。ビッグ データでは、実行に時間がかかる場合があることに注意してください。

于 2013-07-18T11:16:46.887 に答える