【问题标题】:Need help with MySQL, joining two queries在 MySQL 方面需要帮助,加入两个查询
【发布时间】:2010-02-09 11:54:59
【问题描述】:

我正在运行 WordPress,我想编写一个自定义查询,以显示基于一个特定类别的帖子的每月存档。我使用调试模式来了解如何根据所有帖子获取每月存档,选择特定类别。以下是查询:

获取每月存档:

SELECT YEAR(post_date) AS `year`, MONTH (post_date) AS `month`, 
  count(ID) as posts FROM wp_posts  
  WHERE post_type = 'post' AND post_status = 'publish' 
  GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC

选择类别:

SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy
  AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy 
  IN ('category')  AND t.slug = 'blog' ORDER BY t.name ASC

我不知道如何加入这两个 ;) 感谢任何帮助!

谢谢。

更新:

还涉及另一个名为 term_relationships 的表,因此总共有 4 个表。这是 WordPress 数据库结构的图片:http://codex.wordpress.org/images/8/83/WP_27_dbsERD.png

无论如何,这就是我所在的位置:

SELECT t.*, tt.*, YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, 
    count(ID) as posts FROM wp_posts, wp_term_relationships AS tr, 
    wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id 
    WHERE tt.taxonomy IN ('category') AND t.slug = 'blog' 
    AND post_type = 'post' AND post_status = 'publish' 
    AND ID = tr.object_id AND tr.term_taxonomy_id = t.term_id 
    GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC

我知道这不是最好的方法,这就是为什么我需要你的帮助;)

谢谢。

【问题讨论】:

  • 对于那些没有运行 WordPress 的人,你能发布 show create table 为每个涉及的表的结果吗?特别是,这两个表是否具有可用于将它们相互关联的字段? (或者它们可以通过第三张表相互关联吗?)
  • 没有人能从这些查询中找到 wp_posts 和 wp_terms 之间的关系,你最好在这里给我们一些表格方案

标签: mysql wordpress


【解决方案1】:

像这样的东西作为你需要的连接和 where 子句添加的基础怎么样:

    SELECT 
        YEAR(post_date) AS `year`, 
        MONTH (post_date) AS `month`, 
        count(ID) as posts  
    FROM wp_posts 
    INNER JOIN wp_term_relationships wtr ON wp_posts.id = wtr.object_id
    INNER JOIN wp_term_taxonomy wtt ON wtr.term_taxonomy_id = wtt.term_taxonomy_id
    INNER JOIN wp_terms wt ON wtt.term_id = wt.term_id
    WHERE post_type = 'post' AND post_status = 'publish' 
    AND wtt.taxonomy = 'category'
    AND wt.name = 'enter category name here'
    GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC

【讨论】:

  • 我通过 wordpress 过滤器喂它,它工作了,非常感谢 Kris!
  • 好东西 :) 乐于提供帮助
  • @KrisC:嘿,你能给我一些资源链接,我可以在那里学习这种复杂的 wordpress 数据库查询吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多