从2个查询创建一个查询

时间:2014-01-13 15:36:39

标签: mysql sql subquery

我有两个问题:

SELECT COUNT(*) as cnt, video.title
FROM tags
INNER JOIN tag_name ON tags.tag_name_id = tag_name.tag_name_id 
INNER JOIN video ON video.filename = tags.filename 
WHERE tag_name.tag LIKE 'tree' 
GROUP BY filename

SELECT COUNT(*) as cnt2 FROM tags GROUP BY filename

在第一个,我有一个计数器,计算每个视频中tag“树”出现的次数。

在第二个,我从每个视频中选择标签的总数。

结果可以在此处找到:1st query< - > 2nd query

现在我正试图通过使用子查询方法来“加入”它们,但是我没有得到正确的结果......计数器不能像我预期的那样工作,因为你可以看到{{3} }

我做错了什么?我怎样才能正确地将这两个查询“加入”?

1 个答案:

答案 0 :(得分:1)

使用相关子查询尝试此(SELECT COUNT(*) AS cnt2 FROM tags WHERE filename=t.filename) vcnt将计算子查询文件名等于t的文件中的所有记录.filename父表的文件名,即标签t

SELECT 
  COUNT(*) AS cnt,
  (SELECT 
    COUNT(*) AS cnt2 
  FROM
    tags 
  WHERE filename = t.filename) vcnt,
  video.title 
FROM
  tags t 
  INNER JOIN tag_name 
    ON t.tag_name_id = tag_name.tag_name_id 
  INNER JOIN video 
    ON video.filename = t.filename 
WHERE tag_name.tag LIKE 'tree' 
GROUP BY t.filename