2017-11-09 10 views
0
SELECT p.post_title FROM wp_posts p 
LEFT JOIN wp_term_relationships tr on (p.ID = tr.object_id) 
LEFT JOIN wp_term_taxonomy tt on (tr.term_taxonomy_id = tt.term_taxonomy_id) 
LEFT JOIN wp_term_taxonomy tt2 on (tr.term_taxonomy_id = tt2.term_taxonomy_id) 
WHERE 
tt2.term_id IN(36, 32) 
AND tt.term_id = 33 
AND p.post_type = 'post' 

実際には、私は2つの異なるタクソノミー(ステータスとカテゴリ)を持っていますが、それぞれには多くの用語があります。そこに私は1つの特定のカテゴリの用語(そのterm_id 33)をチェックする必要がありますいくつかの投稿のステータス用語term_id 36または32。誰かがこのクエリの何が間違っているか教えてください。

実際には、(wp_term_taxonomyテーブルの)同じ列に条件を適用する必要があります。

上記のクエリは何も返しません。皆さん、私を助けてください。

+0

として、そうでない場合はWHERE conditionLEFT JOIN TABLEに関連した列を使用しないでください。http://blog.jerryorr.com/2014/04/solve-your-をproblem-by-almost-asking.html – xsami

+0

私が承認したときに押された拒否の編集者。私の間違い。 – Twelfth

答えて

1

これらの作業は、ところで、このブログをチェックしてくださいINNER JOINので

SELECT p.post_title FROM wp_posts p 
LEFT JOIN wp_term_relationships tr on (p.ID = tr.object_id) 
LEFT JOIN wp_term_taxonomy tt on (tr.term_taxonomy_id = tt.term_taxonomy_id) 
     AND tt.term_id = 33 
LEFT JOIN wp_term_taxonomy tt2 on (tr.term_taxonomy_id = tt2.term_taxonomy_id) 
     AND tt2.term_id IN (36, 32) 
    WHERE p.post_type = 'post' 
+0

動作していません。すべてのレコードを返します。 – App

+0

私の提案は、特定の結果が必要な場合は、SQLの正しい結合の使用法です..その後、あなたの期待される結果をより良く説明することができます..あなたの左の結合よりも1つ以上が内部結合にならなければなりません。実際の結果と期待される結果。 – scaisEdge

関連する問題