Итак, вот немного фона в системе. Бой игрока и победитель - тот, кто выигрывает большинство раундов. Мне нужна помощь, возможно, соединяя три таблицы. У меня есть таблица user
, в которой хранится информация о пользователе. Таблица match
, в которой хранится информация о совпадении. Таблица rounds
, которая хранит победителя каждого раунда за матч, поэтому, если матч имеет 5 раундов, то таблица rounds
будет иметь пять строк для этого матча и будет записывать победителя каждого раунда.Нужно руководство для сложного запроса
Вот некоторые примерные данные: Таблицы user
: (userid
является первичным ключом)
userid username
-----------------
1 Kevin
2 Sam
3 Steve
4 Matt
Таблица match
: (id
является первичным ключом challenger
и challenged
являются внешними ключами к user.userid
.)
id challenger challenged rounds
-----------------------------------
1 2 3 3
2 1 2 1
3 2 3 3
4 2 4 1
Таблица rounds
: (все поля являются первичным ключом. id
является внешним ключом к match.id
и winner
является внешним ключом к user.userid
)
id round winner
------------------
1 1 2
1 2 2
1 3 3
2 1 1
3 1 2
3 2 3
3 3 2
4 1 4
Я пытаюсь построить запрос, который будет выводить следующие результаты:
winner won loser won
------------------------
Sam 2 Steve 1
Kevin 1 Sam 0
Sam 2 Steve 1
Matt 1 Sam 0
Приведенные выше результаты показывает победителя и проигравший каждого из матчей. Поле won
показывает количество выигранных раундов для победителя и проигравшего соответственно.
Кто-нибудь знает, как я могу построить вышеуказанный запрос?
Также важно здесь, я думаю, это то, что произойдет, если они связывают? Или мы можем предположить, что всегда будет нечетное число раундов? – Compeek
Да, всегда есть нечетное число – user962449
Думаю, вам стоит подумать о том, чтобы определить победы, как они есть, и сохранить результат в строке для каждого матча. Таким образом, добавьте другое поле для соответствия вызываемому победителю и заполните его идентификатором пользователя, как только закончится совпадение. Вы сэкономите себе много накладных расходов по сравнению с расчетом выигрышей с гигантским запросом, как в некоторых ответах, которые я вижу каждый раз, когда вам нужны результаты. Кроме того, это намного проще. Если это возможно для вашего проекта, я чувствую, что это намного лучший способ. – Compeek