仅在发布帖子的WP数据库中选择metakey值(两个表)

时间:2016-07-01 15:44:20

标签: sql wordpress sqlite

我正在尝试从wordpress数据库中选择metakey值,如下所示:

global $wpdb;

$r = $wpdb->get_col( $wpdb->prepare( "
     SELECT meta_value FROM {$wpdb->postmeta} 
     WHERE meta_key = 'cast' 
 ") );

此代码非常有效,除了它显示未发布帖子的结果。对于那个原因,我试图从post表添加aditional参数,标记为" publish"。我试图像这样查询数据库,但它无法正常工作:

 $r = $wpdb->get_col( $wpdb->prepare( "

      SELECT wp_postmeta.meta_value
      FROM wp_postmeta
      LEFT JOIN wp_posts
      ON wp_postmeta.post_id = wp_posts.ID 
      WHERE wp_postmeta.meta_key = 'cast' AND wp_posts.post_status ='publish'


") );

1 个答案:

答案 0 :(得分:1)

我自己找到了答案。我不知道它是否是最好的解决方案,但它完成了我的需要。所以,对于其他寻找答案的人来说,我的代码是有效的:

global $wpdb;

      $r = $wpdb->get_col( "

            SELECT key1.meta_value
            FROM $wpdb->postmeta key1
            INNER JOIN $wpdb->posts key2
            ON key1.post_id = key2.ID 
            AND key2.post_status ='publish'
            WHERE key1.meta_key = 'cast' 

      " );