[英]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.