アーカイブ

‘MySQL’ タグのついている投稿

WassUpで人気記事を取得するSQL

2012 年 1 月 28 日 コメントはありません

WordPressにはWassUpという、アクセス状況を調べることのできるプラグインがあります。
WassUpはアクセスのログをMySQLのテーブルに保存しているのでSQLを使えば簡単にアクセス状況を集計をすることができます。

そこで「30日間にアクセスの多かった記事」を取得するSQLを考えてみました。

SELECT post_title, count( urlrequested ) AS ct
FROM wp_wassup
JOIN wp_posts ON replace( urlrequested, "/wp/archives/", "" ) = wp_posts.id
WHERE instr( urlrequested, "archives" ) >0
AND instr( urlrequested, "category" ) =0
AND UNIX_TIMESTAMP( ) - timestamp <30 *24 *60 *60
GROUP BY urlrequested
ORDER BY count( urlrequested ) DESC
LIMIT 0 , 10

URLを「/wp/archives/3815」としている場合の例です。「wp」はWordPressのフォルダです。
ログは「wp_wassup」テーブルに保存されています。
記事は「wp_posts」テーブルに保存されているので、結合して記事のタイトルを取得します。
「30 *24 *60 *60」の「30」が日数です。

次が実行結果です。

post_title ct
ワンピースARカードダスのレアカード 7226
ワンピースARカードダス一覧 第3弾 6166
ワンピースARカードダス一覧 第2弾 4436
ワンピースARカードダス一覧 4196
伝説ポケモンのARマーカー 2243
GoogleカレンダーにCSVファイルから予定をインポートする方法 1936
ワンピースARカードダス、40枚中34枚を発見 1668
「ショットノート」を自作 1633
ポケモン立体図鑑ARマーカーリスト 1310
番号と日付がセットできる自作SHOT NOTE 1241

ワンピースとポケモンばかりだ。

カテゴリー: WordPress タグ: , , ,

MySQLのordが返す値

2011 年 11 月 21 日 コメントはありません

MySQLで文字コードを得るにはASCII()という関数を使います。
マルチバイト文字(日本語の全角文字など)についてはord()を使います。
しかし返す値がよく分かりません。

リファレンスには次の通り書かれています。 続きを読む…

カテゴリー: デジタル タグ: , ,

VBAやJavaScriptなどの置換関数の引数の違い

2010 年 11 月 17 日 コメントはありません

VBAやJavaScriptなどには文字列を置換するための関数があります。
「これはペンです」の「ペン」を「鉛筆」に置換して「これは鉛筆です」に変換するようなケースで使います。

言語によって微妙に書き方が異なるので注意を要します。
私がよく使う、Excel、VBA、JavaScript、PHP、MySQLについて、比較してみました。

言語 関数
Excel SUBSTITUTE(文字列,置換前,置換後)
VBA Replace(文字列,置換前,置換後)
JavaScript 文字列.replace(置換前,置換後)※正規表現が使える。
PHP str_replace(置換前,置換後,文字列)または
preg_replace(置換前,置換後,文字列)※正規表現が使える。
MySQL REPLACE(文字列,置換前,置換後)

言葉の意味は次の通りです。
文字列「これはペンです」置換前「ペン」置換後「鉛筆」に置換

カテゴリー: Excel, JavaScript タグ: , , , , ,

MySQLで文字を一括置換する方法

2010 年 8 月 21 日 コメントはありません

MySQLで特定の文字列を一括置換する方法は次の通りです。

UPDATE テーブル SET カラム = REPLACE(カラム,置換前文字列,置換後文字列);

例えば、テーブル「予定表」のカラム「場所」の「○○教室」を「○○会議室」に一括置換したい場合には次のようにします。

UPDATE 予定表 SET 場所 = REPLACE(場所,"教室","会議室");

続きを読む…

カテゴリー: デジタル タグ: ,

ロリポップのサーバ移設で文字化け

2010 年 6 月 9 日 コメントはありません

このブログはレンタルサーバのロリポップを使っています。
今日、サーバの移設があったのですが、自分で作成したページに文字化けが発生しました。
PHP5とMySQL5を使用しているページが文字化けします。

その対処方法は「mysql_select_db」の後に「mysql_set_charset(“utf8″)」を挿入すること。

mysql_select_db(データベース名);
mysql_set_charset("utf8");

私の場合はこれで文字化けが解消されました。

カテゴリー: デジタル タグ: , , ,

MySQL5に移行

2010 年 1 月 23 日 コメントはありません

WordPressは2.9からは、MySQLは4.1.2以上でないと使えません。MySQL5ならばOKです。
ところが私の使っているMySQLは4.1.2未満だったのでアップグレードできませんでした。
MySQL4から5にするためにはデータベースの移行が必要なので躊躇していました。またPHPとの相性の問題もあるかもしれず、エラーが出たら面倒だと思っていました。

今般、思い切ってMySQL5に移行しました。
私が使っているレンタルサーバでは、まずMySQL4のデータベースからMySQL5の試用のデータベースにコピーされます。
この間、新旧のデータベースは使えません。つまり、このコピーの間はデータベースを使うウェブページにはエラーが表示されるのです。「只今、メンテナンス中」などという表示をするのが鉄則ですが、面倒なので、放置。
しかし、何時間もかかると思っていた、このコピーはわずか1分ほどで終了。

早速、phpMyAdminで新データベースの中身を覗いてみました。問題なくコピーされているようです。
次に、このブログの接続先データベースを書き換えてみました。そして適当なコメントを入れてみたところ、これも無事、新データベースに反映されました。
その他の自作のウェブページも試してみましたが問題なさそうです。

そこで試用ではなく本番で使用するように設定します。この切替は数秒。旧データベースが削除されます。
今夜は徹夜も覚悟していましたが、あまりに簡単なので拍子抜けしました。

WordPressも無事、2.9.1にアップグレードできました。

WordPress | 日本語 » WordPress 2.9.1 日本語版リリースのお知らせ

カテゴリー: WordPress タグ: ,

MySQLのテーブルを削除する

2009 年 11 月 14 日 コメントはありません

XOOPSという仕組みを利用していたのですが、利用者が皆無なので、削除することにしました。
XOOPSはMySQLのテーブルをたくさん使います。私の環境では47個もありました。
一つずつ削除するのは面倒なので困っていたのですが、SQL文を次のように書いたところ、一気に消すことができました。

DROP TABLE table1,table2,table3
カテゴリー: デジタル タグ: ,