查询以识别人们正在使用的浏览器

时间:2013-10-10 16:07:23

标签: mysql

我有一个存储管理员登录请求的表。

-- desc AdminLogins

+----------------+--------------+------+-----+---------+----------------+
| Field          | Type         | Null | Key | Default | Extra          |
+----------------+--------------+------+-----+---------+----------------+
| id             | int(10)      | NO   | PRI | NULL    | auto_increment | 
| adminID        | mediumint(9) | YES  | MUL | NULL    |                | 
| loginTimestamp | datetime     | YES  |     | NULL    |                | 
| browser        | varchar(255) | YES  |     | NULL    |                | 
+----------------+--------------+------+-----+---------+----------------+

浏览器字段包含用户代理,我想生成一些图表,显示过去6个月内每个用户代理的受欢迎程度,但我坚持查询。

到目前为止我已经

select distinct browser, left(loginTimestamp, 7) from AdminLogins group by left(loginTimestamp, 7);

但它并没有归还我所追求的目标。

理想情况下,我会按时间字符串的前7个字符进行分组,并查看每个时段的不同用户代理。

2 个答案:

答案 0 :(得分:3)

select date(loginTimestamp) as logindate,
       group_concat(distinct browser) as useragents
from AdminLogins 
group by logindate

答案 1 :(得分:1)

这只是部分答案,并不提供您需要的SQL,但确实提供了您很快就会需要的信息。

用户代理很复杂,并且可能包含很多细节 - 有时你不仅可以识别浏览器,还可以识别操作系统,浏览器版本,有时甚至是随机的垃圾,你可能从不关心.NET的版本他们安装的框架。

如果您只是将完整的用户代理字符串转储到MySQL表中而不事先对其进行任何处理,那么您将无法巧妙地提取人类有意义的信息 - 更不用说可以合理地使用的信息了形成漂亮的图形 - 仅使用SQL从该表开始。

相反,在您感兴趣的时间段内拉出所有用户代理,并使用编程语言而不是SQL进行处理。如果您使用的是PHP,则需要获取最新的browscap.ini文件,并使用get_browser函数来解析用户代理。

您可能需要考虑重新调整现有跟踪代码,以便在记录用户代理时调用get_browser,并记录您关注的所有详细信息(例如浏览器,操作系统,主浏览器版本号,次要浏览器)版本号)在单独的列中。然后,将来有可能只使用SQL提取有用的信息。