自定义SQL查询以获取带有图像的大多数查看帖子

时间:2014-02-19 10:52:57

标签: mysql sql wordpress metadata

我正在尝试编写自定义SQL查询,并且只能使其中的一部分工作。

我需要选择浏览量最多的前10个帖子。 (见下面的代码)

SELECT p.*, pm1.meta_value + 0 AS viewcount 

FROM wp_posts p    

LEFT JOIN wp_postmeta pm1  ON pm1.post_id = p.ID

WHERE pm1.meta_key = 'pvc_views' AND p.post_status IN ('publish') AND p.post_type='post' AND p.post_password ='' 

ORDER BY viewcount 

DESC LIMIT 0, 10

上面的代码确实有效,但我还需要在查询中添加一些内容,同时返回图像附件元数据。我尝试了下面的代码,其中包含inner join,但我收到错误:Unknown column 'ID' in 'where clause'

SELECT p.*, pm1.meta_value + 0 AS viewcount 

FROM wp_posts p

INNER JOIN (SELECT * FROM wp_postmeta  WHERE post_id = ID AND meta_key = '_wp_attachment_metadata') pm2

LEFT JOIN wp_postmeta pm1  ON pm1.post_id = p.ID

WHERE pm1.meta_key = 'pvc_views' AND p.post_status IN ('publish') AND p.post_type='post' AND p.post_password ='' 

ORDER BY viewcount 

DESC LIMIT 0, 10

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

你需要在内部查询中提供wp_posts表的别名,你也可以重写你的查询,如下所示

SELECT 
p.*, 
pm1.meta_value + 0 AS viewcount ,
pm2.meta_value AS image
FROM wp_posts p
INNER JOIN 
wp_postmeta   pm2
 ON (pm2.post_id = p.ID AND pm2.meta_key = '_wp_attachment_metadata')
LEFT JOIN wp_postmeta pm1  ON pm1.post_id = p.ID
WHERE 
pm1.meta_key = 'pvc_views' 
AND p.post_status IN ('publish') 
AND p.post_type='post' 
AND p.post_password ='' 
ORDER BY viewcount 
DESC LIMIT 0, 10
相关问题