SQL收集来自不同行的值并更新新行

时间:2017-05-05 09:34:02

标签: php sql wordpress

我有一个WordPress数据库。在postmeta表中,我们为每个帖子提供3个不同的值。我们更新我们的主题3次,并且每次帖子数量都相互不同。我想做到这一点;一个表中的值在不同的行中:

post id 10 value 1:better-views-count 3455
post id 10 value 2:post_stats 522
帖子ID 10值3:post_views_count 52

我想将三者相加并更新结果post_views_count。

我怎么做以及我应该使用什么SQL?

我认为没有选择用SQL fol 1000做它应该是一个PHP代码。但我无法想象我应该使用它的sql。

EDITED

在我做了一些改变和研究后,我找到了一个解决方案:

<?php $my_meta = bf_get_post_meta( 'better-views-count' );?>
<BR>
<?php $my_meta2 = bf_get_post_meta( 'post_stats' );?>
<BR>
<?php $my_meta3 = bf_get_post_meta( 'post_views_count' );?>


BETTER:
<?php echo $my_meta ?>
<BR>
POST STATS:<?php echo $my_meta2 ?><BR>
POST VIEW COUNT:<?php echo $my_meta3 ?>
<BR>
TOTAL:
<?php
$a=array("a"=>$my_meta,"b"=>$my_meta2,"c"=>$my_meta3);
$total_sum = array_sum($a);

echo $total_sum;
?>


<?php



$row = $wpdb->get_row( $wpdb->prepare("SELECT * FROM wp_postmeta WHERE post_id = $post->ID;") );

if ($row) {
    $qry_result = $wpdb->update( 
        wp_postmeta, 
        array( 
            'id' => $row->id,
                     'post_id' => $post->ID ,
                     'meta_key' => "better-views-count",
                     'meta_value' => $total_sum
                       ), 
                 array(
                     '%s',
                     '%s',
                     '%s'
                      )
    );
} else {
    $qry_result = $wpdb->insert( 
        wp_postmeta, 
        array( 
                     'post_id' => $post->ID,
                     'meta_key' => "better-views-count",
                     'meta_value' => $total_sum
        ), 
        array( 
                     '%s',
                     '%s',
                     '%s'
                      )
    );
}

if( false !== $qry_result ) {
$qry_result = true;
}

$response = array( 'success' => $qry_result, 'data' => 'hello' ); //if $data is set
echo $qry_result;

?>

结果:

更好:
邮编:37
POST VIEW COUNT:909
总计:946

它应该更新,应该是


更好:946
邮编:37
POST VIEW COUNT:909
总计:1892年

1 个答案:

答案 0 :(得分:0)

使用$wpdb计算每个帖子的总数。

global $wpdb;

$results = $wpdb->query("SELECT meta_value FROM wp_postmeta WHERE post_id IN ('".$post_id."') AND meta_key IN ('better-views-count','post_stats','post_views_count') ");

print_r($results);

只需放置$post_id即可。