我正在尝试创建一个报告工具,用于计算博客网站上与两个已定义的分类标识ID(3& 11)匹配的帖子数。数据的结构使得在每一行上,帖子ID(object_id)与分类ID(term_taxonomy_id)配对。帖子与多个分类法配对,因此object_id重复,而term_taxonomy_id与下一列不同。
这是我正在使用的桌子的一大块:
+-----------+------------------+
| object_id | term_taxonomy_id |
+-----------+------------------+
| 4070 | 11 |
| 4070 | 19 |
| 4074 | 3 |
| 4074 | 19 |
| 4076 | 3 |
| 4076 | 10 |
| 4076 | 11 |
| 4079 | 4 |
| 4079 | 11 |
| 4079 | 16 |
| 4081 | 3 |
| 4081 | 11 |
| 4081 | 20 |
| 4083 | 3 |
| 4083 | 4 |
| 4083 | 11 |
| 4083 | 16 |
| 4083 | 21 |
+-----------+------------------+
如果工作正常,上表chunk的计数应为3,计算object_id 4076,4081和4083.
我可以使用此查询创建我想要计数的object_ids列表:
SELECT object_id
FROM test_term_relationships
WHERE test_term_relationships.term_taxonomy_id IN (3,11)
GROUP BY object_id
HAVING COUNT(*) > 1
...但我无法弄清楚如何计算它们。我在这里尝试从相关问题尝试的方法返回与EITHER term_taxonomy_id 3 OR 11匹配的行数,但不是BOTH(在这种情况下为9),或者它们返回三行“2”代替object_id到表示匹配的分类标识的数量 - 3& 11。
我的问题:我应该使用什么查询来获得匹配的匹配的正确数量的帖子term_taxonomy_id 3& 11?
提前致谢。
答案 0 :(得分:1)
将查询嵌套在派生表中:
SELECT COUNT(*)
FROM
( SELECT object_id
FROM test_term_relationships
WHERE test_term_relationships.term_taxonomy_id IN (3,11)
GROUP BY object_id
HAVING COUNT(*) > 1
) dt