Как бы я отобразил победителя в следующей схеме базы данных? - PullRequest
0 голосов
/ 25 марта 2012

Предположим, у меня есть

 +----------+--------+-----------+
 |  RACE_ID |  NAME  | POSITION  |
 +----------+--------+-----------+

с первичным ключом

 +----------+--------+
 |  RACE_ID |  NAME  |
 +----------+--------+

Для данного участника я хотел бы показать имя плюс победитель гонки. Победителем гонки является тот, у кого POSITION = 1 для данного RACE_ID. Так что-то вроде следующего

SELECT NAME, (???) AS WINNER where NAME='Thorpe'

Я не уверен, что входит ??? Я использую Postgres.

Ответы [ 3 ]

4 голосов
/ 25 марта 2012

при условии, что имя таблицы является постоянным, я бы попробовал что-то вроде этого ниже:

SELECT con.NAME, win.NAME AS WINNER
  from contestant con
  join contestant win
    on win.race_id = con.race_id
   and win.position = 1
 where con.NAME='Thorpe'
1 голос
/ 25 марта 2012
SELECT R1.NAME AS WINNER
FROM RaceTable AS R1 
   INNER JOIN RaceTable AS R2 ON R1.RACE_ID = R2.RACE_ID
WHERE R2.NAME = 'Thorpe' AND R1.Position = 1
0 голосов
/ 25 марта 2012

Я не думаю, что ваш пример ясен.

Я предположил, что RaceID соответствует гонке, имя - это имя участника, а позиция - его результат для этой гонки (таким образом, первичный ключимеет смысл, это означает, что каждое имя может быть в одной и той же гонке только один раз).

Если предположить, что я сказал правильно, у вас уже есть все компоненты в вашем ответе.Вы не упомянули, как называется таблица, но она должна выглядеть примерно так:

SELECT Name AS Winner
FROM table1
WHERE Position = 1
AND RaceID = ??

(как вы и сказали, вы хотели бы получить данный RaceID)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...