mysql - WordPress SQL : get post category and tags

标签 mysql sql wordpress tags

我想查询存储在 MySQL 数据库中的 Wordpress 数据,以获得包含列的结果:

  1. post_id
  2. 类别
  3. 逗号分隔的标签

预期输出:

+---------------+----------+----------------+
| post_id       | category | tags           |
|---------------+----------+----------------+
| 213           | news     | tag1,tag2,tag3 |
+---------------+----------+----------------+

这是我尝试过的:

SELECT
    p.id,
    c.name,
    GROUP_CONCAT(t.`name`)
FROM wp_posts p
JOIN wp_term_relationships cr 
    on (p.`id`=cr.`object_id`)
JOIN wp_term_taxonomy ct 
    on (ct.`term_taxonomy_id`=cr.`term_taxonomy_id` and ct.`taxonomy`='category')
JOIN wp_terms c 
    on (ct.`term_id`=c.`term_id`)
JOIN wp_term_relationships tr 
    on (p.`id`=tr.`object_id`)
JOIN wp_term_taxonomy tt 
    on (tt.`term_taxonomy_id`=tr.`term_taxonomy_id` 
   and tt.`taxonomy`='post_tag')
JOIN wp_terms t 
    on (tt.`term_id`=t.`term_id`)

结果,我得到了我想要的列以及预期的内容,但我只得到一行

我做错了什么?

最佳答案

正如评论中所指出的,我包含了一个聚合函数,但没有“group by”子句。

现在这似乎有效(刚刚添加了 GROUP BY 行):

SELECT
    p.id,
    p.post_name,
    c.name,
    GROUP_CONCAT(t.`name`)
FROM wp_posts p
JOIN wp_term_relationships cr
    on (p.`id`=cr.`object_id`)
JOIN wp_term_taxonomy ct
    on (ct.`term_taxonomy_id`=cr.`term_taxonomy_id`
    and ct.`taxonomy`='category')
JOIN wp_terms c on
    (ct.`term_id`=c.`term_id`)
JOIN wp_term_relationships tr
    on (p.`id`=tr.`object_id`)
JOIN wp_term_taxonomy tt
    on (tt.`term_taxonomy_id`=tr.`term_taxonomy_id`
    and tt.`taxonomy`='post_tag')
JOIN wp_terms t
    on (tt.`term_id`=t.`term_id`)
GROUP BY p.id


+---------------+----------+----------------+
| post_id       | category | tags           |
|---------------+----------+----------------+
| 213           | news     | tag1,tag2,tag3 |
+---------------+----------+----------------+
| 216           | whatever | tag2,tag3      |
+---------------+----------+----------------+

谢谢草莓!

关于mysql - WordPress SQL : get post category and tags,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48271265/

相关文章:

javascript - 如何获取表 <tr> 的唯一行并使用 jquery 对它们进行计数

sql - 使用 sql/postgresql 查询显示带有列名的条件输出

wordpress - 从ftp服务器自动将视频上传到youtube

javascript - 使用 localStorage 记住 ListView

WordPress 网站不断重定向到 no-www

mysql - 如何使用 Dropbox 在两台计算机上保持 mysql 数据库同步?

php - 如何将变量从 MYSQL 结果转换为同名的 PHP 变量?

javascript - post方法不发送全文

sql - SQL-内部联接2个表,但如果1个表为空则返回全部

mysql - Doctrine2 条件关系