0

portataカテゴリでフィルタリングされたカスタム フィールド " " と他のカスタム フィールドの個別の値を選択したいと考えています。

これは、カテゴリ別にカスタム値を選択するクエリです。

global $wpdb;
$querystr2 = "
SELECT DISTINCT wpostmeta.meta_value 
FROM $wpdb->posts wposts
LEFT JOIN $wpdb->postmeta wpostmeta ON wposts.ID = wpostmeta.post_id 
LEFT JOIN $wpdb->term_relationships ON (wposts.ID = $wpdb->term_relationships.object_id)
LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)


WHERE wpostmeta.meta_key = 'portata'
AND $wpdb->term_taxonomy.taxonomy = 'category'
AND $wpdb->term_taxonomy.term_id IN($variabile_c)
ORDER BY wpostmeta.meta_value ASC

";

フィルターに他のカスタム フィールドを追加するにはどうすればよいですか?

4

2 に答える 2

0

$wpdb->postmeta に対して再度結合する必要があります。結合ごとに別のエイリアスを使用し、追加の条件を適用するために WHERE 句にいくつかの AND を追加します。次のようなものです。

 SELECT DISTINCT wpostmeta1.meta_value
   FROM $wpdb->posts wposts
     LEFT JOIN $wpdb->postmeta wpostmeta1 ON wposts.ID = wpostmeta1.post_id 
     LEFT JOIN $wpdb->postmeta wpostmeta2 ON wposts.ID = wpostmeta2.post_id 
     LEFT JOIN $wpdb->term_relationships ON (wposts.ID = $wpdb->term_relationships.object_id)
     LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
   WHERE wpostmeta1.meta_key = 'portata'
     AND wpostmeta2.meta_key = 'other-custom-field-value'
     AND $wpdb->term_taxonomy.taxonomy = 'category'
     AND $wpdb->term_taxonomy.term_id IN($variabile_c)
   ORDER BY wpostmeta1.meta_value ASC

「other-custom-field-value」を、フィルタリングする必要がある 2 番目のカスタム フィールド値に置き換えます。

于 2012-10-02T04:04:02.373 に答える
0

Aaron Miller に感謝します。動作するようになりました。

SELECT DISTINCT wpostmeta1.meta_value
FROM $wpdb->posts wposts
     LEFT JOIN $wpdb->postmeta wpostmeta1 ON wposts.ID = wpostmeta1.post_id 
     LEFT JOIN $wpdb->postmeta wpostmeta2 ON wposts.ID = wpostmeta2.post_id 
     LEFT JOIN $wpdb->term_relationships ON (wposts.ID = $wpdb->term_relationships.object_id)
     LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
WHERE wpostmeta1.meta_key = 'portata'
     AND wpostmeta2.meta_key = 'alimentazione'
AND wpostmeta2.meta_value = '$variabile_portata'
     AND $wpdb->term_taxonomy.taxonomy = 'category'
     AND $wpdb->term_taxonomy.term_id IN($variabile_c)
ORDER BY wpostmeta1.meta_value ASC

ありがとうアーロン・ミラー。カスタム フィールドごとに他のファイラーが 1 つ必要な場合は、左結合を 1 つ追加する必要がありますか? ありがとう!

于 2012-10-02T09:16:39.143 に答える