2

meta key を持つカスタム投稿タイプのフッター要素がたくさんありますfooter_element_meta_alignment。今、私は 、 、 の 3 つの最新の投稿を取得しようとしていmeta_valuesます。したがって、これらの値のそれぞれを持つ 1 つの投稿。123

単一の SQL クエリでこれを達成するにはどうすればよいですか?

これはこれまでの私のSQLクエリです:

"SELECT wposts.*, meta1.meta_value
FROM $wpdb->posts wposts, $wpdb->postmeta meta1
WHERE 1=1
AND wposts.post_type = 'footer_element'
AND wposts.post_status = 'publish'
AND wposts.ID = meta1.post_id
AND meta1.meta_key = 'footer_element_meta_alignment'
AND (meta1.meta_value = 1 OR meta1.meta_value = 2 OR meta1.meta_value = 3)
ORDER BY meta1.meta_value ASC";

ただし、最新のメタ値だけでなく、指定されたメタ値を持つすべての要素をフェッチします。

ANSWER
私自身の質問に答えました。

4

2 に答える 2

0

修正されました(私は願っています)。

 SELECT wposts.* FROM $wpdb->posts wposts WHERE
 wposts.post_type = 'footer_element'
 AND wposts.post_status = 'publish'
 AND wposts.ID IN 
 (SELECT max(meta1.post_id) FROM $wpdb->postmeta meta1
 WHERE meta1.meta_value = 1 OR meta1.meta_value = 2 OR meta1.meta_value = 3
 GROUP BY meta1.meta_value)
于 2013-03-04T10:51:22.040 に答える
0

数時間苦労した後、これに対する解決策を見つけました。

SQL

"SELECT *
 FROM (  SELECT p.*, m.meta_value AS meta
         FROM $wpdb->posts AS p
         LEFT JOIN $wpdb->postmeta AS m
         ON p.ID = m.post_id
         WHERE m.meta_key = 'footer_element_meta_alignment'
         AND p.post_status = 'publish'
         ORDER BY m.meta_value ASC, p.post_date DESC) AS h
 GROUP BY meta";
于 2013-03-04T13:32:45.100 に答える