1

SQL Server に 2 つのテーブルがあります。

ここに画像の説明を入力

MatchIdここで、これら 2 つのテーブルを結合してHost nameとを取得する select ステートメントを書きたいと思いますGuest name

私が試したこと:

select Match.Id, Team.Name, Team.Name 
from Match 
join Team on Match.HostId = Team.Id

ホスト名とゲスト名が同じです。

select Match.Id, Team.Name, Team.Name 
from Match 
join Team on Match.HostId = Team.Id 
join Team on Match.GuestId = Team.Id

エラーが出ました。

助けてください!

4

4 に答える 4

3

このための単純な結合を確認する必要があります。

SELECT m.Id AS MatchId, h.Name AS HostName, g.Name AS GuestName
FROM Match AS m
INNER JOIN Team AS h ON m.HostId = h.Id
INNER JOIN Team AS g ON m.GuestId = g.Id

個々のチーム名を取得するには、MatchテーブルのHostIdとGuestIdを別々にTeamテーブルに結合する必要があります。2回目の試行で発生したエラーを防ぐために、エイリアスを使用しました。

于 2012-10-12T19:03:12.550 に答える
3

テーブルに2回参加する必要があります。

select m.id MatchId, 
   h.name HostName, 
   g.name GuestName
from match m
left join team h
  on m.hostid = h.id
left join team g
  on m.guestid = g.id
于 2012-10-12T19:03:32.067 に答える
0

エラーが発生する理由は、SQLのキーワードであるため、テーブルに別の名前を使用するか、使用してMatchエスケープする必要があるためです。'Match'

Adamのクエリを受け取り、必要に応じて変更します。

SELECT m.Id AS MatchId, h.Name AS HostName, g.Name AS GuestName
FROM `Match` AS m
INNER JOIN Team AS h ON m.HostId = h.Id
INNER JOIN Team AS g ON m.GuestId = g.Id
于 2012-10-12T19:13:37.007 に答える
0

ID が両方のテーブルのレコードをリンクするために使用されていると仮定します (つまり、両方のテーブルの主キーですが、外部キーとしても使用されています)。

select m.HostId, m.GuestId, t.Name 
from Match m
left outer join Team t
    on m.id = t.id

ID が同じでない場合は、次の手順を実行して、すべてのチームをすべての試合に一致させることができます。

select m.HostId, m.GuestId, t.Name 
from Match m
cross join Team t

それが目的でない場合は、テーブルの 1 つに外部キーを追加するか、MatchId と TeamId を使用して新しいテーブルを作成して 2 つをリンクする必要がある場合があります)。

create table MatchTeam
(
    MatchId bigint not null
    ,TeamId bigint not null
)

go

select m.HostId, m.GuestId, t.Name 
from Match m
left outer join MatchTeam mt
    on m.Id = mt.MatchId
left outer join Team t
    on mt.TeamId = t.id

hostid と guestid が team テーブルに関連している場合:

select m.id MatchId
, h.Name HostName
, g.Name GuestName 
from Match m
left outer join Team h
    on m.HostId = h.id
left outer join Team g
    on m.GuestId = h.id
于 2012-10-12T19:07:51.227 に答える