$wpdb SQL帮助。根据另外两个POST_META值选择POST ID和POST META值

时间:2013-11-18 作者:David Labbe

我正在尝试根据其他两个帖子元值的值和自定义帖子类型选择帖子ID和帖子元值。

这是我的post meta表的屏幕截图。https://www.evernote.com/shard/s40/sh/99a4c115-48bb-46c4-81ef-0df3ccd48862/3f9e2d56e7bb5db54a64782b9860ab4b/deep/0/wp_13_postmeta%20@local_wp_multisite_%20(localhost).png

我需要_days meta\\u键值基于_start_date_end_date 价值观

我还想把帖子的id还给你。

更新:我想我明白了。这不是wordpress的形式,但这是最简单的部分。如果有人可以改进,请添加到它。谢谢

 SELECT
key1.ID,
key1.post_title,
days.meta_value AS days
FROM
wp_13_posts key1
INNER JOIN wp_13_postmeta days ON days.post_id = key1.ID
AND days.meta_key = \'_days\'
INNER JOIN wp_13_postmeta startdate ON startdate.post_id = key1.ID
AND startdate.meta_key = \'_start_date\'
INNER JOIN wp_13_postmeta enddate ON enddate.post_id = key1.ID
AND enddate.meta_key = \'_end_date\'
WHERE
days.meta_key = \'_days\'
AND startdate.meta_value <= \'1385769600\'
AND enddate.meta_value >= \'1383264000\'
AND key1.post_type = \'mbe_enrollments\'

1 个回复
最合适的回答,由SO网友:David Labbe 整理而成
 $post_this_month = $wpdb->get_results($wpdb->prepare("
    SELECT
    key1.ID,
    key1.post_title,
    days.meta_value as days
    FROM
    $wpdb->posts key1
    INNER JOIN $wpdb->postmeta days ON days.post_id = key1.ID
    AND days.meta_key = %s
    INNER JOIN $wpdb->postmeta startdate ON startdate.post_id = key1.ID
    AND startdate.meta_key = %s
    INNER JOIN $wpdb->postmeta enddate ON enddate.post_id = key1.ID
    AND enddate.meta_key = %s

    WHERE days.meta_key = %s
     AND startdate.meta_value <= %s
     AND enddate.meta_value >= %s
     AND key1.post_type = %s
      ", \'_days\', \'_start_date\', \'_end_date\',
    \'_days\', $month_end, $month_start, \'mbe_enrollments\'
    ));
结束

相关推荐

带有Prepare()的WPDB SQL查询返回变量,而不是DB值

我已经试着让它发挥作用有一段时间了,而我似乎无法靠自己取得任何进展。它似乎可以作为一个普通的SQL查询正常工作,但不在WP框架内使用prepare(). 基本上,我试图在SQL查询中插入一个PHP变量,但函数不是返回我选择的值,而是返回变量的值。我搜索过其他有相同问题的人,但大多数人都在处理LIKE和%通配符的问题。我想不出我的问题是什么。我使用的是bbPress变量,它是论坛id。任何帮助都将不胜感激。global $wpdb; $countquery = $wpdb->get_var(