可以说我有一个表’ wp_users‘,其中包含以下数据:
wp_users
Name user_registered ID dog 2008-05-14 18:53:30 1 cat 2008-05-14 12:13:20 2 mouse 2008-05-14 08:51:32 3 giraffe 2008-05-15 22:13:31 4 Moose 2008-05-16 13:20:30 5 monkey 2008-05-16 08:51:32 6 mongoose 2008-05-16 22:13:31 7 fish 2008-05-16 13:00:30 8
然后,我有另一个表“ wp_usermeta”,其中wp_users.ID == wp_usermeta.user_id:
wp_usermeta
wp_users.ID == wp_usermeta.user_id
user_id meta_key meta_value 1 wp_capabilities a:1:{s:10:"subscriber";s:1:"1";} 2 wp_capabilities a:1:{s:15:"s2member_level2";s:1:"1";} 2 wp_s2member_subscr_id I-SDJKSDD 3 wp_capabilities a:1:{s:15:"s2member_level2";s:1:"1";} 3 wp_s2member_subscr_id I-sdfsdfsdf 4 wp_cabilities a:1:{s:10:"subscriber";s:1:"1";} 5 wp_cabilities a:1:{s:10:"subscriber";s:1:"1";} 6 wp_cabilities a:1:{s:10:"subscriber";s:1:"1";} 7 wp_capabilities a:1:{s:15:"s2member_level2";s:1:"1";} 7 wp_s2member_subscr_id I-sd45gds 8 wp_capabilities a:1:{s:15:"s2member_level2";s:1:"1";} 8 wp_s2member_subscr_id I-3fskkhh
我正在寻找的是一种生成一些汇总列的方法,该列汇总wp_users.user_registered日期中每一天的订户注册数量与s2member_level2注册数量(我不在乎一天中的小时,只关心日期)。为了更好地定义它们:
wp_users.user_registered
“ subscriber”:将不存在行meta_key = wp_s2member_subscr_id-只是不存在。请注意,用户1、4、5和6没有此行,因此它们是“订户”。同样在“ wp_capabilities”行中,他们将使用单词“ subscriber”而不是“ s2member_level2”。不必同时满足这两个条件,因为这两个条件对于所有订户都是正确的(我提到了这两个条件,以防一个比另一个更容易检查)。
subscriber
meta_key = wp_s2member_subscr_id
wp_capabilities
s2member_level2
“ s2member_level2”:在一行中确实有meta_key = wp_s2member_subscr_id一些随机字母值(上表中的用户2、3、7、8)。s2member_level2。的值中也将有“ ”字样meta_value。不必同时满足这两个条件,因为这两个条件对于所有s2member_level2都是正确的(我提到了这两个条件,以防一个比另一个更容易检查)。
meta_value
对于上面的示例表,理想的输出将如下所示:
Date subscriber s2member_level2 2008-05-14 1 2 2008-05-15 1 0 2008-05-16 2 2
这是这里找到的问题(和答案)的一个更复杂的问题,它只是寻找任何种类的订户总数。这试图区分订户与s2member_level2。我假设可以使用一些精美的join语句来完成此操作,希望能对您有所帮助!
select date, SUM(case when subscriber = 1 and s2member_level2 = 0 then 1 else 0 end) subscriber, SUM(case when s2member_level2 = 1 then 1 else 0 end) s2member_level2 from ( select date(user_registered) date, id, sum(case when B.meta_key = “wp_capabilities” then 1 else 0 end) as subscriber, sum(case when B.meta_key = “wp_s2member_subscr_id” then 1 else 0 end) as s2member_level2 from wp_users A LEFT JOIN wp_usermeta B ON A.Id = B.user_id group by date(user_registered), id ) C group by date