2012-10-25 42 views
7

Tôi cần trích xuất tất cả các bài đăng từ WordPress DB của mình cùng với các danh mục được liên kết và không chắc chắn cách viết truy vấn này. Tôi đã lấy một vài đâm vào nó đã không có niềm vui và sẽ đánh giá cao sự giúp đỡ?Truy vấn SQL để trích xuất tất cả các bài đăng trên WordPress với các loại

EDIT: Đây là những gì tôi đã cố gắng đã:

SELECT post_title, wpr.object_id, wp_terms.name 
FROM wp_terms 
INNER JOIN wp_term_taxonomy ON wp_terms.term_id = wp_term_taxonomy.term_id 
INNER JOIN wp_term_relationships wpr ON wpr.term_taxonomy_id = 
wp_term_taxonomy.term_taxonomy_id 
INNER JOIN wp_posts ON ID = wpr.object_id 
WHERE taxonomy = 'category' 
AND post_type = 'post' 
ORDER by post_title 

Điều này dường như làm việc nhưng nó trả 1.553 nơi tôi biết tôi chỉ có 1343 trong DB của tôi.

EDIT: Chúng tôi đã làm điều tương tự trên một truy vấn SQL một thời gian ngắn trước và thấy rằng nó đã được kéo trong các phiên bản và sau các loại khác, nhưng nghĩ rằng điều này đã được giải quyết bằng post_type = 'post'

EDIT: Khi xem số lượng danh mục trong DB, tôi nghĩ ra tổng số 216, 6 tắt số nếu bạn trừ 1553 - 1343 = 216. Vì vậy, tôi nghĩ tổng số 1553 này sắp tới từ bảng wp_terms cần được loại trừ và chỉ những người đang hoạt động với các bài đăng được xuất bản mới được hiển thị?

EDIT: Khả năng khác là mỗi bài đăng có thể có nhiều danh mục, do đó lý do có nhiều bài đăng hơn (1553). Vậy làm cách nào tôi có thể tách từng bài đăng thành nhiều danh mục?

Rất cám ơn!

+0

[bạn đã thử gì] (http://whathaveyoutried.com) cho đến nay? bạn có thể đăng cấu trúc của các bảng bạn cần truy vấn không? – Aprillion

+0

Điều gì sai với những gì bạn đã đăng? Nó có lỗi hay không trả lại kết quả bạn muốn? –

+0

Tôi đã thêm một vài CHỈNH SỬA để trợ giúp với các phát hiện của tôi nếu có ai có thể xem lại nó một lần nữa? – SixfootJames

Trả lời

19

Đây là câu trả lời cuối cùng phù hợp với tôi.

SELECT DISTINCT 
post_title 
, post_content 
,(SELECT meta_value FROM wp_postmeta WHERE wp_postmeta.meta_key = 'Asking Price (US\$)' AND wp_postmeta.post_id = wp_posts.ID) AS "Asking Price (US\$)" 
,(SELECT group_concat(wp_terms.name separator ', ') 
    FROM wp_terms 
    INNER JOIN wp_term_taxonomy on wp_terms.term_id = wp_term_taxonomy.term_id 
    INNER JOIN wp_term_relationships wpr on wpr.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id 
    WHERE taxonomy= 'category' and wp_posts.ID = wpr.object_id 
) AS "Categories" 
,(SELECT group_concat(wp_terms.name separator ', ') 
    FROM wp_terms 
    INNER JOIN wp_term_taxonomy on wp_terms.term_id = wp_term_taxonomy.term_id 
    INNER JOIN wp_term_relationships wpr on wpr.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id 
    WHERE taxonomy= 'post_tag' and wp_posts.ID = wpr.object_id 
) AS "Tags" 
FROM wp_posts 
WHERE post_type = 'post' 
ORDER BY 
post_title 
, post_content 
+2

Cảm ơn bạn đã chia sẻ SQL để lấy các thẻ và danh mục từ cơ sở dữ liệu - đã giúp rất nhiều :) –

+0

Rất vui khi nó hoạt động cho bạn. ;) – SixfootJames

+5

'AND post_status = 'publish'' – Xeoncross

Các vấn đề liên quan