У меня есть 3 таблицы.
Первая таблица - это Битвы со столбцами:
--battleId(primary)--gameId(foreign)--prize--
Вторая таблица - это Игры со столбцами:
--gameId(primary)--gameName--
Три таблицы - это BattleParticipants с колонками:
--battleParticipantsId(primary)--userId(foreign)--battleId(foreign)--score--
Сначала я написал этот запрос, чтобы присоединиться к Battles and Games и получить данные BattleId, выигрышей и gameName:
SELECT
battles.battleId
, battles.prize
, games.gameName
FROM
battles
JOIN
games
ON
battles.gameId = games.gameId
Этот запрос возвращает battleId,prize,gameName
данные каждое сражение.
Я хочу расширить этот запрос, чтобы получить количество участников в каждом сражении (что означает строки в таблице BattleParticipant с Battles.battleId = BattleParticipants.battleId) каким-то образом комбинируя его с таблицей BattleParticipants.
Таким образом, результатом должно быть: battleId, приз, gameName, numberOfParticipantInBattle
Пример Таблицы и результат:
Сражения:
--battleId(primary)--gameId(foreign)--prize--
asd123 1 100
asd1234 2 200
asd1235 1 300
Игры:
--gameId(primary)--gameName--
1 Some Game
2 Another Game
Участники битвы:
--battleParticipantsId(primary)--userId(foreign)--battleId(foreign)--score--
1 qwedqweqw asd123 100
2 qweqwe asd1234 200
3 qweadgjhg asd123 400
4 asd asd123 500
Ожидаемый результат:
[ RowDataPacket {
battleId: 'asd123',
prize: 100,
gameName: 'Some Game',
numberOfParticipantInBattle: 3 },
RowDataPacket {
battleId: 'asd1234',
prize: 200,
gameName: 'Some Game',
numberOfParticipantInBattle: 1 },
RowDataPacket {
battleId: 'asd1235',
prize: 300,
gameName: 'Some Game',
numberOfParticipantInBattle: 0 }
]
Это то, что я получу, если попробую дать ответ @Gordon Линофф:
[ RowDataPacket {
battleId: 'asd123',
prize: 100,
gameName: 'Some Game',
numberOfParticipantInBattle: 3 },
RowDataPacket {
battleId: 'asd1234',
prize: 200,
gameName: 'Some Game',
numberOfParticipantInBattle: 1 },
RowDataPacket {
battleId: 'asd1235',
prize: 300,
gameName: 'Some Game',
numberOfParticipantInBattle: 0 },
RowDataPacket {
battleId: 'asd123',
prize: 100,
gameName: 'Another Game',
numberOfParticipantInBattle: 3 },
RowDataPacket {
battleId: 'asd1234',
prize: 200,
gameName: 'Another Game',
numberOfParticipantInBattle: 1 },
RowDataPacket {
battleId: 'asd1235',
prize: 300,
gameName: 'Another Game',
numberOfParticipantInBattle: 0 } ]
есть ли способ ove дубликаты или я должен сделать это вручную