我想跟踪用户在我的网站上的生命周期进展情况,如:
registered
updated profile
first post
etc.
虽然状态始终是独占的 - 一次意味着一个特定的状态 - 用户也可能属于各种组和子组,例如:
Group Subgroup
Referred Search
Referred Email
Engineer Software
Engineer Hardware
我计划将这些状态更改记录到mySQL表中,相应地更新每个用户的唯一行:
user_lifecycle tbl
---------------------
user_id (pk)
join_date
state
而且我认为这些组应该存储在另一个表中,因为用户可以同时属于许多组:
user_groupings tbl
-------------------------
grouping_id (auto-counter - pk)
user_id
group
subgroup
要使用第三方工具提供正确的图表(进行同期群分析),我需要查询并导出为以下汇总格式(需要转换为CSV格式)
Group,Subgroup,Joined,Registered,Updated Profile,First Post
Referred,Search,10/25/12,5,5,5
Referred,Search,10/26/12,10,10,0
Referred,Email,10/25/12 5,5,5
Referred,Email,10/26/12 5,0,5
Engineer,Software,10/25/12,0,5,10
Engineer,Software,10/26/12,15,5,0
Engineer,Hardware,10/25/12,10,5,0
Engineer,Hardware,10/26/12,5,5,5
Total,,10/25/12,10,10,10
Total,,10/26/12,20,10,5
我的桌子结构适合这个吗?如果是这样,我如何查询以提供所需的结果?如果没有,你会改变什么,相应的查询是什么?如果它有帮助,我也将使用PHP服务器端。我认为这可能有用:
SELECT join_date AS Date, SUM(IF(state = ‘registered’, 1, 0)) AS 'Registered', SUM(IF(state = ‘updated profile’, 1, 0)) AS 'Updated Profile', SUM(IF(state = ‘first post’, 1, 0)) AS 'First Post'
FROM user_lifecycle
GROUP BY join_date
但我不确定如何正确添加其他表并添加其他分组。
答案 0 :(得分:0)
分组表应该是一个连接表,组也有一个自引用。例如:
groups
--------
id
name
parent_id (fk to groups)
user_groups
------------
id (auto-counter - pk)
user_id
group_id
这样您就可以将用户分配到一个组,一个组可以有多个子组。但是,如果您想支持多个级别的子组(即子组可以有子组),那么您将需要查看嵌套集实现。