计算与另一列中的多个已定义ID(行)匹配的一列中的ID数

时间:2013-09-16 06:16:38

标签: mysql sql wordpress count taxonomy

我正在尝试创建一个报告工具,用于计算博客网站上与两个已定义的分类标识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?

提前致谢。

1 个答案:

答案 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