我有一个自定义表格,用于跟踪网站的访问权限。 该表如下:
日期,post_slug,用户
我想创建一个查询(mysql),从该表中添加第4列,其中包含帖子的所有类别。
我不想为每个类别创建一个新行,只是将所有类别添加到此表的每一行。
信息应存储在wp_term_relationship和wp_terms中,但我不知道如何为每个类别创建一行而不是n行
答案 0 :(得分:1)
你应该做的主要是group by wp_posts.id
。此命令将所有相等的id
合并为一行。现在,您应该使用group_concat( FIELDNAME )
将所有愿望字段放在一列中。
您需要类别名称或类别ID吗?
如果您希望有类别名称:
SELECT tbl.*,GROUP_CONCAT(term.name) FROM
YOURTABLE as tbl
left join wp_posts as p
on p.post_name = tbl.post_slug
left join wp_term_relationships as rels
on rels.object_id = p.ID
left JOIN wp_term_taxonomy as tx
on tx.term_taxonomy_id = rels.term_taxonomy_id
left join wp_terms as term
on term.term_id = tx.term_id
where tx.taxonomy = "category"
group by p.ID
如果您需要类别ID:
SELECT tbl.*,GROUP_CONCAT(tx.term_taxonomy_id) FROM
YOURTABLE as tbl
left join wp_posts as p
on p.post_name = tbl.post_slug
left join wp_term_relationships as rels
on rels.object_id = p.ID
left JOIN wp_term_taxonomy as tx
on tx.term_taxonomy_id = rels.term_taxonomy_id
-- left join wp_terms as term
-- on term.term_id = tx.term_id
where tx.taxonomy = "category"
group by p.ID
注意:
YOURTABLE
是您的3栏目表。
如果您想获取所有代码,只需将where tx.taxonomy = "category"
修改为where tx.taxonomy = "post_tag"
如果您使用的是自定义帖子类型,并且您想要wordpress自定义帖子类型标签或类别,请在and p.post_type ="YOURPOSTTYPE"
行之后添加where ..
。