【发布时间】: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 之间的关系,你最好在这里给我们一些表格方案