Нужен запрос, чтобы найти общее расстояние с некоторым условием? - PullRequest
0 голосов
/ 11 октября 2018

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

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

----------------------------------
| 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 Ответ

0 голосов
/ 11 октября 2018

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

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...