Я использую Oracle v11.2 с sqlplus.
У меня есть таблица, в которой указано время прохождения дорожной команды средней школы.Таблица:
track.laptimes
Name Null? Type
----------------------------------------------------- -------- ----------------
MATCHID NOT NULL NUMBER(10)
PLAYERID NOT NULL NUMBER(10)
LAP NOT NULL NUMBER(10)
POSITION NUMBER(10)
Я пытаюсь вернуть одну таблицу с 3 столбцами, кругом и позицией первого (майка) и второго победителя (боб) для конкретного matchID, который имеет20 кругов.Для примера мы можем жестко кодировать, первое место будет
PLAYERID=1 as mike
, а второе -
PLAYERID=2 as bob
Ожидаемый результат при запросе matchID = 1 будет
lap mikePos bobPos
------------ -------- -------------------
1 3 7
2 2 4
........
20 1 2
Я могу получить половину запроса без проблем
SELECT laptimes.lap, laptimes.position AS mikePos
FROM track.laptimes
WHERE matchID=1 AND playerID=1;
Это приводит к более чем 20 строкам и не имеет соответствующего 3-го столбца.
Проблема возникает, когда я пытаюсьдобавьте еще один столбец к этому выводу для позиции боба в том же матче и для того же круга.Как мне подойти к этому?Я пытался выполнить INNER JOIN и использовать предложение WITH, но в результате CROSS JOIN дает 400 строк вместо желаемых 20. Может ли кто-нибудь указать мне правильное направление, как я мог бы структурировать этот запрос?
Я думал о том, чтобы иметь две таблицы, аналогичные приведенному выше запросу, но одну для mike и одну для bob, а затем соединить их обратно с таблицей track.laptimes и выбрать колени, mikePos и bobPos, но мне не повезло сделать это таким образом ивсегда приводит к CROSS JOIN.
Я не ищу ответа, просто точка в правильном направлении, спасибо!