我们有一个明智的产品花费时间表,例如

--------------------------------------------------
ID| Timespent | Userid | productID           |
--------------------------------------------------
1 | 12333     | 420     | 223
2 | 3647      | 424     | 423
3 | 333       | 424     | 823
4 | 1333      | 654     | 283
--------------------------------------------------


上表中有多个条目

我们还有另一个表,其中包含产品和标签映射

--------------------------------------------------
product_id      | tag_id |
--------------------------------------------------
1               | 4352
823             | 43
823             | 654
423             | 4352
--------------------------------------------------


我们还有另一个带有标签名称的表

--------------------------------------------------
tag            | tag_name |
--------------------------------------------------
1               |  NEWS
823             | Sports
223             | cricket
423             | football
--------------------------------------------------


例如,我想获取根据标签和用户明智花费的时间总和

用户ID应该是不同的,花费的总时间将是花费的总时间

--------------------------------------------------
user_id | tag_name | total_time_spend
--------------------------------------------------
823     | football | 324237462
722     | cricket  | 324237462
839     | new      | 324237462
923     | USA news | 324237462
23      | MODI     | 324237462
--------------------------------------------------

最佳答案

使用联接和相关子查询

    select t.* from (
    Select  p.userid, tn.name,sum(p.timespent) as total
    From product p join tagmapping tm
     on p.productid=tm.product_id
     Join tagname tn on tm.tag_id=tn.tag
     Group by p.userid,tn.name
             ) t where total=
                   select max(total) from
                   (
                    Select  p.userid, tn.name,sum(p.timespent) as total
                    From product p join tagmapping tm
                    on p.productid=tm.product_id
                   Join tagname tn on tm.tag_id=tn.tag
                   Group by p.userid,tn.name
                    ) a where a.userid=t.userid

关于mysql - 如何通过从SQL查询下面提到的三个表中获取数据来找到用户在标签上花费的最高时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54157118/

10-16 14:18