gikami
@gikami
web программист

Как правильно сделать условия IF ELSE или CASE WHEN в SQL?

Как сделать такую логику в sql запросе:
Задача сделать топ по большему количества денег.
Есть 2 таблицы, Пользователи -> t_characters (Там a_nas кошелек),
Вторая таблица, Склад -> t_stash04 (Пользователи могут положить туда деньги из кошелька).
Вот логика такая, мне нужно при перебирании пользователей, делать запрос на Склад и проверять, есть ли там этот пользователь и добавил ли он денежку. Если есть до плюсовать с кошельком и выводить, если нету то просто выводить количество денег a_nas из таблицы Пользователя.
Данный код не выводит ничего.
SELECT * 
FROM  $db_char.t_characters A, $db_char.t_stash04 B 
WHERE 
     CASE WHEN B.a_user_idx = A.a_user_index
     THEN (A.a_nas+B.a_count) 
     ELSE  A.a_nas
     END AS summa
ORDER BY summa DESC LIMIT 20
  • Вопрос задан
  • 133 просмотра
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Какая жуть. Не нужны тут ни IF, ни CASE.
SELECT `c`.`a_user_index`, `c`.`a_nas` + IFNULL(`s`.`sum`, 0)
  FROM (
    SELECT `a_user_idx`, SUM(`a_count`) AS `sum`
      FROM `t_stash04`
      GROUP BY `a_user_idx`
  ) AS `s`
  RIGHT JOIN `t_characters` AS `c`
    ON `c`.a_user_index` = `s`.`a_user_idx`
Ответ написан
Ваш ответ на вопрос

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

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