比较字段和获得百分比

时间:2011-03-03 00:47:54

标签: php mysql

嗨,再次感谢你回答这个问题。

我有一个访问者的mysql表。他们可以将自己喜欢的歌手添加到列表中。所以表格看起来很简单:

user_artist_favorites
id
user_id
artistName

让我们说Moonwalker有4位最喜欢的歌手:

 1. Michael Jackson
 2. Elvis Presley
 3. Ray Charles
 4. Stevie Wonder

用户测试员还有4位最喜欢的歌手:

 1. Michael Jackson
 2. Ray Charles
 3. Stevie Wonder
 4. Lady Gaga (sorry folks)

我现在要做的是比较两个用户并输出如下内容:Moonwalker&测试者有75%的音乐品味。

如何开始?有人能指出我正确的方向吗?

提前感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:4)

Select T1.user_id
    , Count( T2.user_id ) / Count( T1.user_id ) * 100.0 As PercentMatch
From user_artist_favorites As T1
    Left Join user_artist_favorites As T2
        On T2.artistname = T1.artistname
            And T2.user_id = 'Tester'
Where T1.user_id = 'Moonwalker'
Group By T1.user_id
Union All
Select T1.user_id
    , Count( T2.user_id ) / Count( T1.user_id ) * 100.0
From user_artist_favorites As T1
    Left Join user_artist_favorites As T2
        On T2.artistname = T1.artistname
            And T2.user_id = 'Moonwalker'
Where T1.user_id = 'Tester'
Group By T1.user_id

Union All查询的第一部分返回Tester就像Moonwalker的百分比。第二个查询返回Moonwalker与测试器类似的百分比。

答案 1 :(得分:1)

您可以做的是阅读按照两位用户的艺术家姓名排序的列表,然后通过循环计算匹配的歌手数量。循环将有点复杂,因为您需要检查哪个列表在索引处按字母顺序更大,并增加指针在较低的那个上。