Alex_Wells
@Alex_Wells
PHP/Kotlin

Получить max() от результатов sub-query?

Есть запрос с двумя select something as some_field, а нужен третий -
select max(some_field_1, some_field_2) as max_of_some_fields
- но это, логично, не работает, так как ищет пытается найти такие поля в базе. С радостью скинул бы весь запрос, но он очееень большой (4026 символов), поэтому вкратце вот моя попытка:

SELECT *,
       (SELECT Coalesce(Max(won_amount), 0)
        FROM   `fast_games`
               INNER JOIN `fast_bets` AS `winning_fast_bets`
                       ON `winning_fast_bets`.`id` =
                          `fast_games`.`winning_bet_id`
        WHERE  users.id = winning_fast_bets.user_id
               AND `fast_games`.`state` = ?)
       AS `max_fast_jackpot`,
       (SELECT Coalesce(Max(won_amount), 0)
        FROM   `coinflip_games`
               INNER JOIN `coinflip_bets` AS `winning_coinflip_bets`
                       ON `winning_coinflip_bets`.`id` =
                          `coinflip_games`.`winning_bet_id`
        WHERE  users.id = winning_coinflip_bets.user_id
               AND `coinflip_games`.`state` = ?)
       AS `max_coinflip_jackpot`,
       (SELECT Max(max_fast_jackpot, max_coinflip_jackpot))
       AS
       `max_jackpot`
FROM   `users`
WHERE  `id` = ?


max_jackpot - нужное поле. Каким образом заставить это работать?
  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ответы на вопрос 1
@ponaehal
Примерно так:
SELECT Max(max_fast_jackpot, max_coinflip_jackpot) 
FROM (
SELECT *,
       (SELECT Coalesce(Max(won_amount), 0)
        FROM   `fast_games`
               INNER JOIN `fast_bets` AS `winning_fast_bets`
                       ON `winning_fast_bets`.`id` =
                          `fast_games`.`winning_bet_id`
        WHERE  users.id = winning_fast_bets.user_id
               AND `fast_games`.`state` = ?)
       AS `max_fast_jackpot`,
       (SELECT Coalesce(Max(won_amount), 0)
        FROM   `coinflip_games`
               INNER JOIN `coinflip_bets` AS `winning_coinflip_bets`
                       ON `winning_coinflip_bets`.`id` =
                          `coinflip_games`.`winning_bet_id`
        WHERE  users.id = winning_coinflip_bets.user_id
               AND `coinflip_games`.`state` = ?)
       AS `max_coinflip_jackpot`  )

FROM   `users`
WHERE  `id` = ?
)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы