我必须两次加入wp_posts和wp_postsmeta来获取行。首先是post_type=product
,然后是post_type=attachment
。
wp_posts:
╔════╦════════════╦═════════════════════════════════════════════════════╗
║ ID ║ post_type ║ guid ║
╠════╬════════════╬═════════════════════════════════════════════════════╣
║ 48 ║ product ║ http://example.com/xyz ║
╚════╩════════════╩═════════════════════════════════════════════════════╝
wp_postsmeta
╔═════════╦═════════╦═══════════════╦═══════════╗
║ meta_id ║ post_id ║ meta_key ║ meta_value║
╠═════════╬═════════╬═══════════════╬═══════════╣
║ 200 ║ 48 ║ _price ║ 100 ║
╚═════════╩═════════╩═══════════════╩═══════════╝
查询:
接下来,我还想再次wp_posts
与wp_postsmeta
和post_type = attachment
以及meta_key =_thumbnail
加入╔════╦════════════╦═════════════════════════════════════════════════════╗
║ ID ║ post_type ║ guid ║
╠════╬════════════╬═════════════════════════════════════════════════════╣
║ 150║ attachment ║ http://example.com/xyz.png ║
╚════╩════════════╩═════════════════════════════════════════════════════╝
╔═════════╦═════════╦═══════════════╦═══════════╗
║ meta_id ║ post_id ║ meta_key ║ meta_value║
╠═════════╬═════════╬═══════════════╬═══════════╣
║ 200 ║ 48 ║ _thumbnail ║ 150 ║
╚═════════╩═════════╩═══════════════╩═══════════╝
wp_postsmeta:
SELECT p1.ID, p1.guid, p3.guid
FROM wp_posts p1
JOIN wp_postmeta p2
ON p1.ID = p2.post_id AND
p2.meta_key = '_price' AND
p1.post_type = 'product' AND
p1.post_status = 'publish'
JOIN wp_posts p3
ON p3.ID = p2.post_id AND
p2.meta_key = '_thumbnail_id'
JOIN wp_postmeta p4
ON p4.post_id = p3.ID AND
p3.post_type = 'attachment';
然后我使用结果的meta_value并再次使用wp_posts(主键wp_posts.id = wp_postsmeta.meta_value)将其连接起来,这样我就可以从中获得产品的特色图像。
以下是我的完整查询
╔════╦════════════╦═════════════════════════╦════════════════════════════╗
║ ID ║ post_type ║ guid ║ guid ║
╠════╬════════════╬═════════════════════════╬════════════════════════════╣
║ 48 ║ product ║ http://example.com/xyz ║ http://example.com/xyz.png ║
╚════╩════════════╩═════════════════════════╩════════════════════════════╝
上面的查询返回空结果(它不应为空,但如下所示返回表)
set processImage(event) {
console.log(event);
let files: FileList = event.target.files;
let file = files[0];
//send the file as a binary via httpClient
....
答案 0 :(得分:0)
尝试此查询
SELECT posts.post_title,posts.ID, posts.post_name, (SELECT guid from wp_posts AS thumbnailpost INNER JOIN `wp_postmeta` ON (`wp_postmeta`.meta_value = thumbnailpost.ID) where `wp_postmeta`.meta_key='_thumbnail_id' AND `wp_postmeta`.post_id = 2856) AS thumbnail FROM `wp_posts` AS posts where posts.post_type = 'product' and posts.post_status='publish' group by posts.ID limit 100
<强>更新强>
你想这样吗?
SELECT p1.ID, p1.guid,
(select p.guid from wp_posts as p where p2.meta_value=p.ID and post_type='attachment') img
FROM wp_posts p1
JOIN wp_postmeta p2
ON p1.ID = p2.post_id AND
p1.post_type = 'product' AND
p1.post_status = 'publish' AND
p2.meta_key = '_thumbnail_id'
JOIN wp_posts p3
ON p3.ID = p2.post_id