用户id和用户php mysql查询采取的操作的总和

时间:2017-04-27 09:22:58

标签: php mysql wordpress

id  post_id     meta_key     meta_value
1   101         tweet_point        5
2   101         tweet_user_id      1
3   101         email_point        10
4   102         fb_point           10
5   102         fb_user_id         1
6   101         email_user_id      2
7   101         chat_point         5
8   102         tweet_point        2 
9   102         tweet_user_id      2
10  101         chat_user_id       2

从上表中,如果用户ID在一个帖子上发了一条推文,在另一个帖子上发了一个fb帖子,我想把这些点加在一起。

用户标识位于与meta_key列对应的列meta_value中,例如tweet_user_id,email_user_id,chat_user_id,fb_user_id。 每个动作的相同方式点,例如fb_point,tweet_point也存储在meta_value列中,对应于meta_key值,例如tweet_point,fb_point。

我如何在php mysql中执行此操作。我正在使用wordpress。 我看到的结果如下所示

user_id  total
1        15
2        17

我提出了以下代码,它只返回唯一的用户ID。

SELECT distinct (meta_value) FROM wp_postmeta WHERE meta_key IN('tweet_user_id', 'email_user_id','chat_user_id','fb_user_id')

上面的代码返回用户ID,然后我在循环查询下面运行以查找用户获得的点数。

SELECT mm.meta_value from wp_postmeta  m , wp_postmeta  mm WHERE m.meta_value='1' AND mm.meta_key in ('tweet_point','email_point', 'fb_point',  'chat_point') GROUP BY mm.id

它返回多行,例如

meta_value
5
3

如何在一行中对这些值求和,这样我就不需要再次循环。

1 个答案:

答案 0 :(得分:0)

尝试使用此代码。

select user_id, count(post_id) as total from your_table group by user_id