我有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
答案 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