如何选择超过2场比赛?

时间:2010-09-23 15:20:15

标签: php mysql

我很难想到这一个。非常感谢输入。内容总是在变化,但这里是我正在尝试做的一个例子。

  

第1课(关键词:5,9,17,18,25,22)

     

第2课(关键词:5,25,16,19,32)

     

第3课(关键词:1,9,17)

     

第4课(关键词:25,22,16,3,17)

现在,我正在根据故事1查询。我想输出任何与故事1共享> = 2个关键字的故事。

对于此示例,我的代码应输出:

  

故事1

     

故事2

     

故事4

故事2分享关键词5,25

故事4分享关键词25,22,17

不输出故事3只是因为它只与STORY 1共享1个关键字

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

像(未经测试)

之类的东西
SELECT k2.story_id
FROM keywords k1 
     JOIN keywords ks ON k1.keyword = k2.keyword AND k1.story_id < k2.story_id
GROUP BY 
     k1.story_id
WHERE 
     k1.story_id = @story_id
HAVING COUNT(*) > 1

可能适合你。

答案 1 :(得分:0)

你可以通过SQL实现它,就像Unreason所展示的那样,用PHP做起来也很容易。只需将每个Story设为一系列关键字,然后使用array_intersect(story_1, story_n)即可。保持结果数组包含两个以上的项目。