【问题标题】:mySQL COUNT with JOIN on two tables在两个表上使用 JOIN 的 mySQL COUNT
【发布时间】:2014-05-10 21:20:46
【问题描述】:

首先,对不起,我现在不擅长 mySQL。

我有 2 张桌子:

post_meta

id | post_id | page_num
4  | 161     | 14
3  | 160     | 9
2  | 159     | 3
1  | 158     | 16

还有:

wp_posts

id  | date                 | parent_id
161 | 2013-08-28 13:53:48  | 160
160 | 2013-07-28 13:53:48  | 0
159 | 2013-04-28 13:53:48  | 158
158 | 2013-02-28 13:53:48  | 0

我想知道日期为 2013 年的帖子的所有 page_nums 的总和。问题是 1 个帖子有几个其他帖子,这些帖子从父帖子中获取了 parent_id。

在此示例中,id 160 是 wp_posts 中的父帖子,并获得了一个 id 为 161 的子帖子。但它是同一个帖子。

来自 post_meta 的 page_num 从每个帖子中获取 post_id,即使它是一个孩子。在这种情况下,它会是来自 post_meta 的 id 4 和 2,因为这是父帖子 160 和 159 的最新保存。

所以我只需要总结page_nums 最新(最新)子帖子

到目前为止我的(非常糟糕的)尝试:

COUNT pagenum FROM wp_postmeta a WHERE wp_postmeta b post_id.b = parent_id.a AND DATE LIKE='2014' GROUP BY parent_id.b

希望你能理解问题。

提前感谢您的帮助和

最好的问候

【问题讨论】:

  • 这种嵌套可以有多深?孩子可以自己生孩子吗?
  • 不,他们不能。它总是 1 个带有 x-childpost 但没有“孙子”的帖子。每次您更新一篇 wordpress 文章时,该文章都会获得一个子文章,其 parent_id 是第一篇(父)文章。
  • 这是个好消息。但是哪个日期会计算在内,是父母的日期还是最小的孩子的日期?
  • 父级的,因为父级是那个年份/年份的职位。我想要一份以年刊为基础的期刊,其中包含连续的文章。

标签: php mysql sql join count


【解决方案1】:

如果您只有一个级别的子/父关系,您可以使用以下内容来获取 1) 没有孩子的父母和 2) 使用 group by 的每个父母的最新孩子

SELECT meta.*
FROM post_meta meta
INNER JOIN
(SELECT parent.id FROM wp_posts parent      -- parent without child
 WHERE YEAR(date) = 2013 
      AND parent_id = 0 
      AND NOT EXISTS (SELECT 1 FROM wp_posts child
                  WHERE child.parent_id = parent.id)
 UNION
 SELECT max(id) FROM wp_posts               -- latest child
 WHERE YEAR(date) = 2013
 AND parent_id > 0
 GROUP BY parent_id
 )posts
ON posts.id = meta.post_id

sqlFiddle

然后您可以使用 SUM(meta.page_num) as whateverNameYouLike 对 page_num 求和,就像在这个 sqlFiddle 中一样

注意:上述查询假设wp_posts 表中的id 在最近日期是最大的,如果不是这种情况,您将不得不获取max(date) 和@ 987654328@ 组合并以这种方式查找最新条目。这不应该太复杂。

我还添加了一个条目 162 with no child 来测试没有孩子的帖子的情况。这就是为什么 page_num 的总和是 18 而不是 17。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 2016-12-16
    • 2022-11-11
    • 1970-01-01
    • 2014-10-10
    • 2018-07-22
    • 2017-11-04
    相关资源
    最近更新 更多