簡體   English   中英

結合兩個sql查詢-

[英]combine two sql queries -

我有兩個SQL查詢要合並

首先:

SELECT * FROM wp_posts
JOIN wp_postmeta on (post_id=ID)
WHERE  meta_key = "packageID" and  meta_value = 1 
ORDER BY post_date limit 50

將wordpress wp_post表連接到wp_postmeta並獲取所有與packageID = 1會面的帖子(我認為這可能是一種不明智的做法,但它可以工作)

第二

SELECT * FROM wp_postmeta
JOIN wp_posts ON (meta_value=ID) 
WHERE post_id = 2110
AND meta_key = '_thumbnail_id'

再次將wp_post表連接到wp_postmeta表,因此對於ID為2110的帖子,它成功獲取了該帖子的縮略圖。 NB 2110只是ID的示例

在Wordpress中,縮略圖是一種發布。 因此,在此示例中,構成帖子2110的文本與帖子2115相關聯-后者是縮略圖

我想做的是獲取第一個查詢中的列表,但也獲取與每個帖子相關的縮略圖

我想我需要兩個聯接,但看不到如何做(是一個sql初學者)

注意,這將在Wordpress之外的腳本中進行,所以我無法使用Wordpress的內置功能

嘗試以下代碼

SELECT * FROM wp_posts wp JOIN wp_postmeta wm  on (wp.post_id=wm.ID) WHERE  wp.meta_key = "packageID" and  wp.meta_value = 1 ORDER BY wp.post_date limit 50;

使用適當的別名並嘗試。

嘗試使用post_type列。 附件的post_type為“ attachment”。 如果需要,我可以進一步解釋。

縮略圖附加到的帖子也會在post_parent列中。

global $wpdb;

    $query7 = "SELECT distinct wp_postmeta.meta_value, wp_postmeta.meta_key, wp_posts.ID
        FROM wp_posts INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id)
        INNER JOIN wp_postmeta AS mt1 ON (wp_posts.ID = mt1.post_id)
        WHERE wp_posts.ID = wp_postmeta.post_id
        AND wp_posts.post_status = 'publish'
        AND wp_postmeta.meta_key = 'packageID'
        AND wp_postmeta.meta_value = 1
        AND (mt1.meta_key LIKE '_thumbnail_id')
    $output = $wpdb->get_results( $query7 );

多次連接同一張表時,請使用具有不同別名的連接。

希望這可以幫助。

您可以嘗試使用此選項,如果帖子有多個縮略圖,則可以獲取以逗號分隔的縮略圖列表

SELECT 
  *,
  (SELECT 
    GROUP_CONCAT(meta_value) 
  FROM
    wp_postmeta 
  WHERE post_id = wp.ID 
    AND wpm.meta_key = "_thumbnail_id") AS `thumbnails`
FROM
  wp_posts wp 
  JOIN wp_postmeta wpm 
    ON (wpm.post_id = wp.ID) 
WHERE wpm.meta_key = "packageID" 
  AND wpm.meta_value = 1 
ORDER BY wp.post_date 
LIMIT 50 

注意:GROUP_CONCAT對連續字符有限制,但是您可以增加此限制

要僅獲取一個縮略圖,您可以嘗試此

SELECT 
  *,
  (SELECT 
    (meta_value) 
  FROM
    wp_postmeta 
  WHERE post_id = wp.ID 
    AND wpm.meta_key = "_thumbnail_id" LIMIT 1) 
FROM
  wp_posts wp 
  JOIN wp_postmeta wpm 
    ON (wpm.post_id = wp.ID) 
WHERE wpm.meta_key = "packageID" 
  AND wpm.meta_value = 1 
ORDER BY wp.post_date 
LIMIT 50 

嘗試這個

SELECT * FROM wp_posts P1
LEFT JOIN wp_postmeta M1 ON (M1.post_id=P1.ID)
WHERE  (M1.meta_key = "packageID" and  M1.meta_value = 1 )
LEFT JOIN wp_postmeta M2 ON (M2.meta_key=P1.ID AND M2.meta_key = '_thumbnail_id') 
LEFT JOIN wp_posts P2 ON (M2.meta_value=P2.ID)
ORDER BY P1.post_date limit 50

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM