2012-04-14 69 views
0

WordPress的数据库结构看起来像这样:获取用户的数量与在WordPress的DB一定usermeta值

  • wp_users(ID,user_registered等)
  • wp_usermeta(USER_ID,meta_key ,meta_value等)

wp_users.ID对应于wp_usermeta.user_id

我想要选择按DATE(wp_users.user_registered)分组的所有用户的计数以及对应于元键'sex'的元值,它是1或2.结果应该由两列组成,因为有独特的日期。第一栏应该是具有meta值1,第二列的用户数量我没有兴趣在WP具体构成具有用户数量元值2

的计数的计数,我想要做的这与一个单一的SQL查询。

我会后我尝试它是否足够好,不幸的是我没有一个好。真的很感激任何帮助。

回答

2

试试这个:

select sum(um.meta_value = '1') Sex1, sum(um.meta_value = '2') Sex2 
from wp_usermeta um 
join wp_users u on u.id = um.user_id 
where um.meta_key = 'sex' 
group by date(u.user_registered) 

你说:

然后结果应包括两列和多行的,因为有独特的日期。

问题在于你不知道每行所指的日期。你可以添加date(u.user_registered)select声明看得出来。

+0

我不能做这项工作。你是正确的添加日期(u.user_registered),我会需要的。日期看起来不错,但其他两列对于所有行都是零。我对um.meta_key = 1,2有一些担忧,因为该字段是varchar,但添加撇号无助于此。 – 2012-04-14 16:55:43

+0

@Calle首先,我忘记通过'sex'过滤,其次,我用'meta_key = 1'代替'meta_value = 1'(更新应答)。现在试试吧。 – 2012-04-14 16:57:43

+0

啊!在选择部分中将meta_key更改为meta_value使其工作。谢谢。 – 2012-04-14 16:58:35