1

管理者ログイン要求を格納するテーブルがあります。

-- 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 文字でグループ化し、各期間の個別のユーザー エージェントを確認します。

4

2 に答える 2

3
select date(loginTimestamp) as logindate,
       group_concat(distinct browser) as useragents
from AdminLogins 
group by logindate
于 2013-10-10T16:09:14.380 に答える
1

これは部分的な回答にすぎず、必要な SQL は提供しませんが、近いうちに必要になる情報を提供します。

ユーザー エージェントは複雑で、多くの詳細が含まれている可能性があります。ブラウザだけでなく、OS、ブラウザのバージョン、および使用している .NET フレームワークのバージョンなど、気にすることのないランダムながらくたを特定できる場合もあります。インストールされています。

事前に何の処理も行わずに完全なユーザー エージェント文字列を MySQL テーブルにダンプするだけでは、人間にとって意味のある情報を正常に抽出することはできません。 - SQL のみを使用してそのテーブルから。

代わりに、関心のある期間のすべてのユーザー エージェントを引き出し、SQL の代わりにプログラミング言語を使用して処理を行います。PHP を使用している場合は、最新のbrowscap.iniファイルを取得し、get_browser関数を使用してユーザー エージェントを解析する必要があります。

既存のトラッキング コードを再構築get_browserして、記録するときにユーザー エージェントを呼び出し、関心のあるすべての詳細 (ブラウザー、OS、メジャー ブラウザー バージョン番号、マイナー ブラウザー バージョン番号など) を別々の列に記録することを検討することをお勧めします。そうすれば、将来的には SQL のみを使用して有用な情報を抽出できるようになります。

于 2013-10-10T16:28:13.667 に答える