如何匹配标签百分比可以用mysql在mysql中计算

时间:2015-03-16 14:28:54

标签: php mysql mysqli

我有3张桌子, 第一个是播放列表,另外两个是关键字和关键字地图。

我使用下面的sql来查找共享公共标签的播放列表。 我需要在mysql + php中获得通用标签百分比和订单 即使我可以获得匹配的标签计数,我也可以稍后在php中计算百分比。

表是;按顺序播放列表,关键字,关键字地图

|pid  |authorid |totaltrack|

|kid  |keyword  |used       |createdate|

|kmid |kwid     |plid       |

以前的代码;

SELECT p1.pid FROM keywordmap km
LEFT JOIN playlists p1 ON km.plid = p1.pid
WHERE kwid 
IN (
    SELECT kwid FROM playlists p2 LEFT JOIN keywordmap km2 
    ON p2.pid = km2.plid LEFT JOIN keywords kws
    ON km2.kwid = kws.kid WHERE p2.pid = 10
)
GROUP BY plid

期望的结果是;

|plid |matchedtag|percentage
|234  |23        | 65 
|363  |21        | 55
|19   |18        | 34
|91   |1         | 3

1 个答案:

答案 0 :(得分:0)

所以这就是答案。其余的百分比计算基于用户的总标签数量。

SELECT p1.pid, COUNT(plid) as matched, p1.authorid FROM keywordmap km
LEFT JOIN playlists p1 ON km.plid = p1.pid
WHERE kwid 
IN (
    SELECT kwid FROM playlists p2 LEFT JOIN keywordmap km2 
    ON p2.pid = km2.plid LEFT JOIN keywords kws
    ON km2.kwid = kws.kid WHERE p2.pid = $pid
)
GROUP BY plid ORDER BY matched DESC