php - MySQL 多关键字搜索
PHP中文网
PHP中文网 2017-04-10 15:16:29
[PHP讨论组]

首先,给出数据库设计:

[Table_Rel_Tag] #记录电影与其标签的关系表

movie_id,
tag_id


[Table_Tag]

tag_id,
tag_name


现在我有一部电影,《功夫》(movie_id = 1)比如,它的tag就是:搞笑(Tag_id=1),动作(tag_id=2),在数据库内是这样表示的

[Table_Rel_Tag]
rid = 1, movie_id = 1, tag_id = 1
rid = 2, movie_id = 1, tag_id = 2
..
...

类似以上,我现在要推荐一部同类型的,譬如《喜剧之王2》(tag_id = 1, 2),如果有两个以上相同的 tag ,则可认为是同类型的,结果由关键字的多少排序……

不知道表述清楚没,希望有朋友能帮帮忙~~

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
黄舟

select count(*) as s,movie_id
from Table_Rel_Tag
where tag_id in ("譬如《喜剧之王2》(tag_id = 1, 2)")
group by movie_id
having s>2
order by s desc;

思路:
1. 先查出所有相关tag_id的记录。
2. 将这些记录group by 并统计每个movie_id出现的次数s(出现N次则表示有N个相同的tag_id)
3. 根据s进行排序

PHP中文网

我的思路是这样的
可以获取到当前电影的tag吧,标记为tag1,tag2
select distinct(movie_id) from Table_Rel_Tag where tag_id = tag1 and tag_id = tag2
这样就获取到了所有同类型的电影的id了
关键字排序 用order by就可以了吧

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号