我正在尝试执行sql查询或一组查询,这些查询将允许我查找具有相同标记的其他视频,并按大多数匹配对其进行排序。我使用PHP作为服务器端代码和mysql作为我的数据库。为此我使用了2个表。
视频
Column Type Null
timestamp int(11) No
vid_id varchar(32) No
file_name varchar(32) No
uploader varchar(55) No
title varchar(30) No
duration varchar(7) No
Keyname Type Unique Packed Column Cardinality Collation
vid_id BTREE Yes No vid_id 94 A
title FULLTEXT No No title 0
代码
Column Type Null
id varchar(35) No
vid_id varchar(35) No
name varchar(15) No
Keyname Type Unique Packed Column Cardinality Collation
vid_id BTREE Yes No vid_id 0 A
name FULLTEXT No No name 0
将为查询提供一个vid_id。我真的不确定最好的方法是什么,所以任何专家意见都会真的很受欢迎。
答案 0 :(得分:1)
我会做一个
SELECT vid_id, COUNT(*) as count
FROM tags
WHERE name IN('list','of','videos','tags')
GROUP BY vid_id
ORDER BY count DESC
如果您选择在上面的评论中使用该方法,则会稍微复杂一些。
您需要先
SELECT id FROM tags WHERE name IN('list','of','video','tags')
然后,使用那些标签ID
SELECT vid_id, COUNT(*) as count
FROM tags_videos
WHERE tag_id IN(list,of,tag,ids)
GROUP BY vid_id
ORDER BY count DESC
您可能仍然可以在一个查询中执行此操作,但它会使用一些丑陋的连接,并且速度差异可能不会太显着。