【问题标题】:Need a query to find total distance with some condition?需要查询以在某些条件下查找总距离?
【发布时间】:2019-03-16 05:33:48
【问题描述】:

我的数据库中有两个表,一个是类别,第二个是条目表。

我的分类表如下:

----------------------------------
| 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    |
-------------------------------

所以现在我想计算用户 ID“1”的总距离,但这里的一个条件是,对于 201 个类别,总和将除以 1,对于 202 个类别,总距离将除以 4,根据 cat_value 中的类别表.

意味着我想要总距离,例如 ((50+50)/1 + (100+100)/4)

那么,我该怎么做呢?

【问题讨论】:

  • 你试过什么? :-) SO 不是免费的编码服务,我们可以帮助您调试,但我们不会为您创建代码。
  • "那么,我该怎么做呢?" 您可以先进行研究,然后对其进行编码,如果在某处失败,您可以返回这里使用代码。我们不会为您编写代码。
  • @IslamElshobokshy 我知道这不是免费的编码服务。我尝试了很多代码,但无法得到结果。所以,最后,我把问题放在这里没有代码,因为我不确定什么代码会给出我的结果。

标签: php sql mysqli phpmyadmin


【解决方案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

【讨论】:

  • 将代码提供给没有努力尝试的人会鼓励他们的这种行为。
  • @IslamElshobokshy 对任何论点都不感兴趣,只是介意我在这里不是新的 :)
  • 只是陈述一个事实,无论新与否,我都会对任何人说同样的话。干杯!
  • @IslamElshobokshy 就我个人而言,我不明白为什么需要对答案投反对票。我总是看到没有来自 OP 的第一次尝试的帖子。有时他们只是不知道从哪里开始。在这种情况下,OP 实际上在没有被询问的情况下添加了一些示例数据。
  • @ZaynulAbadinTuhin 感谢您的帮助,但是当我运行此代码时,此代码给了我空结果,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多