1

これは、
Wordpress のカテゴリ テーブルを使用し、2 つの主要なカテゴリを使用する方法です。最初のものは " location" と呼ばれ、もう 1つは " " と呼ばれsubjectます。どちらのカテゴリにも独自のサブカテゴリがあります。

私の例では、 " location" カテゴリ 17 と " subject" カテゴリ 3 があります。

これが私がやりたいことです
。カテゴリ17と3の両方が表示されているデータのみを選択したいのです。

このコードはこれまでのところ機能します

SELECT term_id, post_title, post_name, ID, object_id, post_status
FROM wp_posts AS wpost
INNER JOIN wp_term_relationships
   ON wpost.ID = wp_term_relationships.object_id

INNER JOIN wp_term_taxonomy
   ON wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id AND wp_term_taxonomy.taxonomy = 'category'

WHERE wp_term_taxonomy.term_id IN (17, 3)
   AND post_status = 'publish'

問題
カテゴリ 17 と 3 の両方が同じ列に存在します。上記のコードは、投稿が両方のカテゴリに表示される場合、ID を 2 回リストします。

結果で等しいIDをカウントする方法はありますか? ID が 2 つ存在する場合は、その ID から投稿を選択します

4

3 に答える 3

0

一歩近づく?今、私がする必要があるのは、列「count」に「2」を含む行を表示する方法だけです。

カウント列は「ループ」内に作成されるため、「AND count=2」と書くだけでは機能しませんでした。

この例は、カウント列を含む結果を表示します。

SELECT term_id, post_title, post_name, ID, object_id, post_status, COUNT(ID) as count
FROM wp_posts AS wpost
INNER JOIN wp_term_relationships
   ON wpost.ID = wp_term_relationships.object_id

INNER JOIN wp_term_taxonomy
   ON wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id AND wp_term_taxonomy.taxonomy = 'category'

WHERE wp_term_taxonomy.term_id IN (17, 3)
   AND post_status = 'publish'

GROUP BY ID
于 2009-06-03T07:17:04.130 に答える
0

これにより、ネストされたクエリを必要とせずにそれが行われます (カテゴリ 3 または 17 にあるエントリの重複行がない場合)。

SELECT term_id, post_title, post_name, ID, object_id, post_status, COUNT(*) as count
FROM wp_posts AS wpost
INNER JOIN wp_term_relationships
   ON wpost.ID = wp_term_relationships.object_id

INNER JOIN wp_term_taxonomy
   ON wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id AND wp_term_taxonomy.taxonomy = 'category'

WHERE wp_term_taxonomy.term_id IN (17, 3)
   AND post_status = 'publish'
   AND count = 2

GROUP BY ID

count 変数と GROUP BY 句を追加すると、重複がまとめられます。次に、count が 2 に等しい行をフィルタリングして、両方のカテゴリのエントリを取得します。

于 2009-06-02T21:26:52.437 に答える