반응형
워드프레스 SQL: 게시물 카테고리 및 태그 가져오기
MySQL 데이터베이스에 저장된 Wordpress 데이터를 쿼리하여 열로 결과를 얻고자 합니다.
- post_id
- 카테고리
- 쉼표로 구분된 태그
예상 출력:
+---------------+----------+----------------+
| 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
선):
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 |
+---------------+----------+----------------+
고마워요 딸기!
이는 Pierre의 코드를 기반으로 하며, 여러 카테고리를 연결할 뿐만 아니라 카테고리나 태그가 없는 게시물을 포함하도록 확장되었습니다.
SELECT
p.id,
p.post_name,
GROUP_CONCAT(DISTINCT c.`name`) as categories,
GROUP_CONCAT(DISTINCT t.`name`) as tags
FROM wp_posts p
LEFT JOIN wp_term_relationships cr
on (p.`id`=cr.`object_id`)
LEFT JOIN wp_term_taxonomy ct
on (ct.`term_taxonomy_id`=cr.`term_taxonomy_id`
and ct.`taxonomy`='category')
LEFT JOIN wp_terms c on
(ct.`term_id`=c.`term_id`)
LEFT JOIN wp_term_relationships tr
on (p.`id`=tr.`object_id`)
LEFT JOIN wp_term_taxonomy tt
on (tt.`term_taxonomy_id`=tr.`term_taxonomy_id`
and tt.`taxonomy`='post_tag')
LEFT JOIN wp_terms t
on (tt.`term_id`=t.`term_id`)
GROUP BY p.id
언급URL : https://stackoverflow.com/questions/48271265/wordpress-sql-get-post-category-and-tags
반응형
'programing' 카테고리의 다른 글
"새로운 크로스 플랫폼 PowerShell https://aka.ms/pscore6 을 사용해 보십시오"를 억제합니다. (0) | 2023.09.14 |
---|---|
Spring RestTemplate로 SSL 인증서 검사를 비활성화하는 방법? (0) | 2023.09.14 |
Oracle SQL에서 테이블 삭제 (0) | 2023.09.14 |
Razor View Engine이 Mono에 적합합니까? (0) | 2023.09.14 |
Writeline은 새 줄 없이 줄을 씁니다. 파일만 채웁니다. (0) | 2023.09.09 |