如何根据标签匹配计算“得分”

时间:2017-03-30 16:47:42

标签: mysql

这有点难以解释。我有3个表,1个用户,1个用于兴趣和& 1为User_Interests。我想计算得分并将其添加到新列。分数计算不是那么难:基点:50。对于每个兴趣,两个用户都想要添加3分来得分,如果用户对我没有兴趣,我想加1分来得分。这可能是使用mySQL SELECT吗?

用户:
| ID |
| 0 |
| 1 |
| 2 |

息:
| ID |标题|

User_Interests:
| User_ID | Interest_ID |

然而,这将取决于我自己的ID。我看的最终结果是所有用户的列表,并根据我提供的用户的标签得分。假设我的用户ID是0:

结果:
| ID |得分|
| 1 | 69 |
| 2 | 54 |

1 个答案:

答案 0 :(得分:1)

此LEFT JOIN列出了该用户没有的其他用户的共同兴趣和兴趣。

SELECT
    count(my.interest_id) AS common_interests,
    count(*) AS all_interests

FROM users_interests ui
LEFT JOIN users_interest my ON 
    (   my.user_id=$user_id 
    AND my.interest_id=ui.interest_id )
GROUP BY ui.user_id

答案(根据您指定的分数)将是common_interests * 2 + all_interests