结合2个SQL查询以避免foreach循环

时间:2016-01-23 10:23:54

标签: mysql wordpress

我想查询数据库,以便获取所有想要的帖子以及他们的图片。我设法用2个不同的查询来做到这一点。第一个,将所有帖子与所需字段和第二个一起,在foreach循环中运行,以获取每个帖子的图像。我的问题是这需要很长时间,我想避免id。我需要一个解决方案,以避免第二个查询中的foreach循环并将其合并到第一个查询中。

查询1

"SELECT * FROM wp_posts";

并且foreach返回了posts.ID

查询2

"SELECT wp_posts.guid IN (Select wp_postmeta.meta_value from wp_postmeta where wp_postmeta.meta_key = '_thumbnail_id' AND wp_postmeta.post_id = ('the returned post id foreach of ID output of the first query')"

3 个答案:

答案 0 :(得分:1)

使用规范化方法,它将通过避免两个查询来解决您的问题:

SELECT WP.guid
FROM wp_posts WP,
     wp_postmeta WPM
WHERE wp_postmeta.meta_key = '_thumbnail_id'
  AND WPM.post_id=WP.yourForeignField
GROUP BY WP.guid

答案 1 :(得分:0)

我知道在posgresql中,JOIN会这样做。我对单词印刷不太了解,但我会调查并更新此答案

更新应该这样做:

SELECT guid FROM wp_posts 
OUTER JOIN wp_postmeta on wp_postmeta.post_id = wp_posts.id
where wp_postmeta.meta_key = '_thumbnail_id';

JOIN将特定键上的两个表组合在一起。

答案 2 :(得分:0)

你可以像这样使用wordpress默认函数get_posts()

$args = array('posts_per_page'=> -1,'meta_key'=> '_thumbnail_id' );
get_posts( $args );

You can get more information from here