我目前有一个查询选择人们正在观看视频的所有vid_id,并由大多数观众对其进行排序。每当有人观看视频时,都会在scrusersonline中创建一个条目,其中包含字段vid_id
username
timestamp
。
我还有一个tag_map表和一个标签表。 tag_map包含字段id
tag_id
和vid_id
,标记包含字段tag_id
和name
。我只想修改下面的查询,以便只显示某个标签名称的所有vid_id结果。提前感谢您的任何专家帮助。
查询我正在尝试修改。 scrusersonline有字段vid_id时间戳用户名。它检索大多数用户查看的vid_ids,并按降序排序。我想进一步将这些结果限制为某个标签名称
SELECT SQL_CALC_FOUND_ROWS scrusersonline.vid_id, COUNT(scrusersonline.id)
AS idcount FROM scrusersonline
GROUP BY scrusersonline.vid_id ORDER BY idcount DESC
下面的查询是一个简单选择具有特定标记名称但与视频表链接的所有vid_id的示例。我希望能够更改上面的查询,以便它只显示标记名称的结果
SELECT SQL_CALC_FOUND_ROWS video.* FROM tag_map
INNER JOIN tags2 ON tags2.tag_id = tag_map.tag_id
INNER JOIN video ON video.vid_id = tag_map.vid_id
WHERE name IN (?)
ORDER BY video.timestamp DESC LIMIT ?, ?
答案 0 :(得分:1)
以下内容应该为您提供结果:
SELECT SQL_CALC_FOUND_ROWS a.vid_id, count(a.id) as idCount
FROM scruseronline as a
INNER JOIN tag_map as b
ON b.vid_id = a.vid_id
INNER JOIN tags2 as c
ON c.tag_id = b.tag_id
AND c.name IN (?)
GROUP BY a.vid_id
ORDER BY idCount DESC
哦,您可能希望从id
中删除tag_map
,因为其他字段的组合应该是唯一的,并且通常从不引用代理键。