Сначала я объясню случай, у меня есть таблица tbl_game
со структурой как таковой.Эта таблица содержит время, когда игра была начата, и пара, играющая в игру
| id | time | pair_id |
-----------+--------------+ ---------------
1 | 123123123 | 1 |
2 | 123168877 | 1 |
, и у меня есть еще одна таблица tbl_throws
, которая содержит счет для каждого игрока.Если вам интересно, this a basic dice rolling game
| id | game_id | player_id | score |
-----------+--------------+---------------+---------|
| 1 | 1 | 1 | 2 |
| 2 | 1 | 2 | 5 |
| 3 | 1 | 1 | 9 |
| 4 | 1 | 2 | 11 |
| 5 | 2 | 1 | 7 |
| 6 | 2 | 2 | 6 |
Теперь id
здесь - это идентификатор броска, а не идентификатор игры.Здесь каждый игрок с player_id
1 и 2 дважды бросает кости и получает соответствующий счет, представленный в одной и той же игре, и только один раз в другой
Теперь, используя эти две таблицы, мне нужно создатьУстановил рекорд, что общий счет каждого игрока в одной игре
| game_id | game_time | player1_total | player2_total|
|------------+-----------+---------------+--------------|
| 1 | 123123123 | 11 | 16 |
| 2 | 123168877 | 7 | 6 |
Я перепробовал множество громоздких запросов, но ничего не дает другого результата?Какой правильный запрос для этого?
Обновление
Поскольку большинство ответов были связаны с тем фактом, что player1id и player2id должны были быть известны или исправлены.
Поэтому, возможно, информация, которую я собираюсь предоставить, поможет устранить путаницу.есть еще одна таблица, в которой хранится информация об игроке.tbl_pupil
Структура похожа на следующую
| id | unique_id | name |
|---------+---------------+----------|
| 1 | 001 | some |
| 2 | 002 | another |
, и эти игроки вместе называются парой в другом столе tbl_pair
| id | player1 | player2 |
|---------+---------------+----------|
| 1 | 1 | 2 |
So, now
select
g.id
g.time
p1.id as player1id
p1.name as player1name
t.score as player1score
p2.id as player2id
p2.name as player2name
t.score as player2score
FROM
tbl_game g,
inner join tbl_pair as pair on g.pair_id = pair.id
inner join tbl_pupil as p1 on p1.id = pair.player1
inner join tbl_pupil as p2 on p2.id = pair.player2
inner join tbl_throw as t on g.id = t.game_id
Это мой предварительный запрос, который выводитУстановил рекорд, как-то так
| id | time | player1id | player1name | player1score | player2id | player2name | player2score |
----------------------------------------------------------------------------------------------------------------------------
| 1 | 12 | 1 | some | 5 | 2 | another | 2 |
| 1 | 12 | 1 | some | 5 | 2 | another | 5 |
| 1 | 12 | 1 | some | 9 | 2 | another | 9 |
| 1 | 12 | 1 | some | 11 | 2 | another | 11 |
Теперь я просто показываю результаты одного игрового идентификатора.Я не сохраняю достаточные знания, чтобы сгруппировать вышеупомянутую запись в одну, с отдельным счетом суммы игрока 1 в одном столбце и отдельной суммой очков игрока 2 в другом столбце.