次の3つのテーブルがあります。
mysql> explain runners;
+-------------+------------------+
| Field | Type |
+-------------+------------------+
| runner_id | int(10) unsigned |
| name | varchar(100) |
+-------------+------------------+
mysql> explain runs;
+-------------+------------------+
| Field | Type |
+-------------+------------------+
| run_id | int(10) unsigned |
| runner_id | int(10) unsigned |
| race_id | int(10) unsigned |
| position | int(10) |
+-------------+------------------+
mysql> explain races;
+-------------+------------------+
| Field | Type |
+-------------+------------------+
| race_id | int(10) unsigned |
| date | datetime |
+-------------+------------------+
次に、特定のランナーが参加したすべてのレースを次のように表示する必要があります。
mysql> select runner.name, runs.run_id, runs.position, races.race_id
from runners
join runs on(runs.runner_id = runners.runner_id)
join races on(races.race_id = run.run_id)
where runners.runner_id = 1;
+------------------+--------+----------+---------+
| name | run_id | position | race_id |
+------------------+--------+----------+---------+
| John Runner | 1 | 1 | 1 |
| John Runner | 7 | 3 | 2 |
| John Runner | 15 | 2 | 3 |
................... more lines ...................
+------------------+--------+----------+---------+
ここで、このクエリに「勝/秒」という別の列を追加する必要があります。これは、現在のランナーの位置 = 1 の場合は 2 番目に終了したランナーの名前を表示し、現在のランナーの位置 = 1 の場合はそのレースで優勝したランナーの名前を表示します。 != 1 ですが、これを機能させる方法や、何から始めればよいかさえわかりません。