人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MySQL5の質問ですアクセス解析を自作しています。


あるサイトへのアクセス情報を格納したテーブルがあります。

テーブル名:access
フィールド:ip,page

(*具体的な格納情報をコメ欄に書いています)

ここから、各ページへのユニークアクセス数を産出して、以下のテーブルに格納したいです。

テーブル名:unique
フィールド:page,unique

SQLとPHPでこの処理を実現したいと思います。
ストアドプロシージャは知識が全く無いのでPHPがいいです。

自分なりに考えた流れとしては、
AページのIP数を重複を除いてカウント(これがunique数になる)
Bページ、Cページと同じように処理・・
でしょうか。

一時表など使えば出来るような気もしますが、使ったことが無いので具体的な方法が思い浮かびません。
ちょっと複雑になると思いますのでポイントは500以上は用意します。

みなさんよろしくお願い致します。


●質問者: tokyosmash
●カテゴリ:コンピュータ インターネット
✍キーワード:access IP PHP SQL アクセス
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● kunyami
●150ポイント

きちんと確認してないですが・・・

select page, distinct(ip, page)

from access

group by page

でいかがでしょうか?

◎質問者からの返答

回答ありがとうございます。

正確には

select distinct(ip, page) from access group by page

のようですが、これだとcountが無いので質問の意図とは遠い結果になってしまいます。


コメント欄でKUROXさんに回答いただきましたが、

SELECT page,count(*)

FROM (SELECT ip,page

FROM access

GROUP BY ip, page) as aaa

GROUP BY page

で完璧にいけるようです。

後はこれをuniqueテーブルにINSERTするだけですが、そちらは自力で出来ました。


出来れば締め切りたいのですがKUROXさんから回答欄に頂いていないので、そちらを待ちたいと思います。

質問は解決しました。みなさんありがとうございました。


2 ● kunyami
●150ポイント

あらら、書き間違いでした。

select page, count(distinct ip, page)

from access

group by page

これではいかがでしょう?

◎質問者からの返答

回答ありがとうございます。

こちらでも同じ結果になるようですが、シンプルでいいですね。

実行速度も微妙に速かったりするのでしょうか。こちらのSQLでいきたいと思います。


3 ● KUROX
●200ポイント ベストアンサー

>出来ました!自分で作ったSQLはエラーになっていたんですが

>「as aaa」が無かったからでした。

>このままだとポイントが進呈できないので、回答欄に何か

>書き込んで頂けないでしょうか?よろしくお願いします。

お気遣いどうもありがとうございます。

お言葉に甘えさせていただきます。

◎質問者からの返答

コメント欄での回答ありがとうございました。サブクエリを覚えるきっかけになったのでありがたい回答でした。


ポイントについて)

SQL自体はkunyamiさんのSQLの方がシンプルなのでポイント配分に迷ったのですが、色々考えた結果いるかはKUROXさんで、ポイントをkunyamiさんに少しだけ多目に配分する事にしました。



みなさんありがとうございました。これで締め切らせていただきます。大変有益な質問になりました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ