Вам нужен запрос, чтобы найти общее расстояние с некоторым условием?

У меня есть две таблицы в моей базе данных: одна категория, а вторая - таблица записей.

Таблица моей категории выглядит следующим образом:

----------------------------------
| Cat_ID |  cat_type | cat_value |
----------------------------------
|  201   |  running  |     1     |
|  202   |  cycling  |     4     |
----------------------------------

Моя таблица входа выглядит следующим образом:

-------------------------------
| user_id | cat_ID | distance |
-------------------------------
|    1    |   201  |    50    |
|    1    |   201  |    50    |
|    1    |   202  |   100    |
|    1    |   202  |   100    |
|    2    |   201  |    10    |
|    2    |   201  |    10    |
-------------------------------

Итак, теперь я хочу, чтобы общее расстояние для идентификатора пользователя «1», но здесь одно условие - это то, что для 201 категории сумма общей суммы будет делить на единицу, а общее расстояние 202 для категории будет делить на 4 по таблице категорий в cat_value.

Значит, мне нужно полное расстояние, подобное ((50 + 50) / 1 + (100 + 100) / 4)

Итак, как я могу это сделать?

Всего 1 ответ


Использовать соединение и подзапрос

select 
    sum(t1.totald/c.cat_value) as total_distance
from 
    cat c
join
    (select 
         sum(distance) totald, user_id, cat_id 
     from 
         entry where user_id=1 --- if you just want for userid=1
     group by 
         user_id, cat_id) t1 on c.Cat_ID = t1.Cat_ID

Есть идеи?

10000