我有这么一个问题:
两份数据:
一份是用户一天内的搜索日志,记录了用户id,搜索词keyword,搜索时间time
一份是用户一天内的点击日志,记录了用户id,点击词keyword,点击时间time
问题:
如何设计表 能查询出来一个用户一天的所有行为(时间顺序),我建了两个表搜索和点击表,记录两份数据上述内容 但是似乎无法联合查询出来,所以请教一下
补充:
用户搜索 点击 一天内有一次到多次
比如:
id: 1234: 8:00搜索"博客园"
8:02点击"博客园"
8:04点击"博问"
12:00搜索"myskl"
12:01搜索"mysql"
像这样
如果强行用你给出的表结构,两个表时间分开排序,可以用:
select t1.keyword(搜索词),t2.keyword(点击词),t1.time(搜索时间),t2.time(点击时间) from table1 t1,table2 t2 where t1.id=t2.id order by t1.time,t2.time
你给出的表结构不能把两张表的时间综合排序,要设计为一张表
id keyword type(点击/搜索) time
select * from table order by time
确实我的那样两个表不行,你和楼上的想法的确更好,这样应该可以先根据id排序,然后id相同的再按时间排序,这样就能把每个用户的行为展示出来了
@燃烧的小腿毛: 对喽
这个貌似没法同时查2张没有关联字段的表 , 查2张表 ,然后结果按日期合并
表字段{id(用户id),createTime(访问时间),tpye(类型,如1是点击,2是搜索),remark(点击或搜索内容)}。
sql 就不写了,按时间排序就行,其他的业务层处理
你都不用建表,建个视图
能详细说下吗,从来没有用过视图,对mysql也是刚刚开始使用
@燃烧的小腿毛: 类似于建了一个虚拟表,这个虚拟表的字段是你现有表的字段,你可以随便加,然后这个虚拟表(视图)跟实体表一样去查询
两个结果集合并,用 union 关键词