如何在 mysql 和 php 中计算匹配标签百分比
How matched tags percentage can be calculated in mysql with php
我有 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
答案就在这里。其余部分根据用户的总标签数计算百分比。
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
我有 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
答案就在这里。其余部分根据用户的总标签数计算百分比。
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