0

ここに私の問題があります。私は3つのテーブルを持っています:

人物表

person_id, name

イベント テーブル

event_id, event_name, event_date

マッチ表

match_id, person_a, person_b, winner, event

したがって、match テーブルでは、person_a、person_b、および Winner は、Person テーブルの person_id に対応する整数です。

Matches テーブルから行を取得すると、次のようになります。

1, 1, 2, 1, Chess Tournament #33

これらの 3 つのフィールド (person_a、person_b、および Winner) を Person テーブルで検索して、実際の名前を取得して結果を得るにはどうすればよいですか?

1, John, Steven, John, Chess Tournament #33

2 つのテーブルを結合することを検討しましたが、ON id=id や WHERE id=id だけでは実行できないため、意味がありません。助けていただければ幸いです。

4

1 に答える 1

4
SELECT
  Matches.match_id AS match_id,
  PersA.name AS persa_name,
  PersB.name AS persb_name,
  IF(winner=person_a,PersA.name,PersB.name) AS winner_name,
  Events.event_name AS event_name
FROM
  Matches
  INNER JOIN Person AS PersA ON Matches.person_a=PersA.person_id
  INNER JOIN Person AS PersB ON Matches.person_b=PersB.person_id
  INNER JOIN Events ON Matches.event=Events.event_id
WHERE
  -- whatever
于 2012-06-02T23:55:41.543 に答える