0

ASPページに最新の投稿の抜粋、投稿のタイトル、注目の画像を表示しようとしています。クエリを簡略化するために、各投稿のカスタムフィールドとしてパーマリンクを追加します。注目の画像を除くすべてを取得するクエリがあり、注目の画像を取得する別のクエリがありますが、それらを1つのクエリにマージする方法がわかりません。

//投稿の抜粋と投稿のタイトルを取得します

SELECT
 wp_posts.id, 
 wp_posts.post_title, 
 wp_postmeta.meta_value, 
 wp_postmeta.meta_key, 
 wp_posts.post_excerpt 
 FROM 
 wp_postmeta 
 INNER JOIN wp_posts p ON (wp_postmeta.post_id = wp_posts.ID) 
 WHERE post_id IN (
 SELECT wp_posts.id 
 FROM wp_posts 
 WHERE post_type = 'post' 
 AND post_status = 'publish' 
 AND meta_key = 'my_permalink' 
 ORDER BY post_date, wp_posts.id
 ) 
 ORDER BY wp_posts.post_date DESC, wp_postmeta.post_id 
 LIMIT 2

//投稿の注目画像を取得します

 SELECT p.*
      FROM wp_postmeta AS pm
     INNER JOIN wp_posts AS p ON pm.meta_value=p.ID 
     WHERE pm.post_id = $ID
       AND pm.meta_key = '_thumbnail_id' 
     ORDER BY p.post_date DESC 

誰かがこれらのクエリをマージするのを手伝ってもらえますか?ありがとう。

返されるサンプルデータ:ID | post_title | post_excerpt | meta_value_my_permalink | features_image_guid

**更新* サブクエリで「IN」を使用しようとするとエラーが発生するため、1行以上取得できないことを除いて、正常に機能する次のものを取得できました。たとえば、pm2.post_id IN(SELECTwp_posts)。 id FROM wp_posts WHERE post_type ='post' AND post_status ='publish' ORDER BY post_date DESC LIMIT 2)

SELECT 
  p.post_title,
  p.post_excerpt,
  pm.meta_value AS permalink,
  p2.guid as thumbnail,
  p2.post_title as image_alt
FROM
  wp_postmeta pm
  INNER JOIN wp_posts p ON (pm.post_id = p.ID),
  wp_postmeta pm2
  INNER JOIN wp_posts p2 ON (pm2.meta_value = p2.ID)
WHERE
  pm.post_id = (SELECT wp_posts.id FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' ORDER BY post_date DESC LIMIT 1) AND 
  pm.meta_key = 'my_permalink' AND 
  pm2.post_id = (SELECT wp_posts.id FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' ORDER BY post_date DESC LIMIT 1) AND 
  pm2.meta_key = '_thumbnail_id'
4

3 に答える 3

1

サンプルデータがないと取得しようとしているものを確認するのは困難ですが、投稿IDを知っていて、my_permakinkキーと_thumbnail_idキーの両方からの情報が必要だと思いますか?私はタブレットを使用しているので、必要最低限​​の情報のみを提供し、結果セットを制限してフィルタリングできるようにします。

Select *
From wp_posts p
     Inner join
     Wp_postmeta pm1 on p.id = pm1.post_id and metakey = 'my_permalink'
     Inner join
     Wp_postmeta pm2 on p.id = pm1.post_id and metakey = '_thumbnail_id'

これにより、両方のメタキーの情報を含む画像を含むすべての投稿が提供されます。画像のない投稿の情報が必要な場合は、2番目の内側の結合を左の結合に変更します。

于 2012-12-02T07:50:07.890 に答える
0

一連の結合とサブクエリとしてのビューにより、必要なものが得られました。

SELECT 
  p.post_title,
  p.post_excerpt,
  pm.meta_value AS permalink,
  p2.guid AS thumbnail,
  p2.post_title AS thumbnail_alt
FROM
  wp_postmeta pm
  INNER JOIN wp_posts p ON (pm.post_id = p.ID)
  INNER JOIN wp_postmeta pm2 ON (pm2.post_id = p.ID)
  INNER JOIN wp_posts p2 ON (pm2.meta_value = p2.ID)
WHERE
  pm.meta_key = 'my_permalink' AND
  pm2.meta_key = '_thumbnail_id' AND 
  p.ID IN (SELECT * FROM vwLatestPostIds)
于 2012-12-03T13:32:06.693 に答える
0

これを使用して、投稿のタイトル、投稿ID、投稿の注目サムネイルURL、投稿カテゴリなどを取得します-"SELECT a.ID id、a.post_title title、a.post_content content、taxonomy、name、a.post_date_gmt postdate、max(c。 guid)img_url FROM kb_posts a JOIN kb_term_relationships tr ON(a.id = tr.object_id)JOIN kb_term_taxonomy tt ON(tr.term_taxonomy_id = tt.term_taxonomy_id AND tt.taxonomy ='category')JOIN kb.terms t .term_id AND t.term_id = $ user_id)

            LEFT JOIN
            (select post_parent, max(post_date_gmt) as latest_image_date from kb_posts
            where post_type='attachment' GROUP BY post_parent) b 
            on a.id=b.post_parent

            LEFT JOIN kb_posts c
            on c.post_parent=a.id 
            and c.post_type='attachment' 
            and b.latest_image_date = c.post_date_gmt where c.guid IS NOT NULL


            GROUP BY a.ID ORDER BY a.ID DESC LIMIT 5"
于 2014-03-01T20:34:36.070 に答える