2009年4月9日木曜日

関数の中でdistinctを使う

select count(distinct column_name) from table_name
こういう使い方もできるんですね。

2009年4月8日水曜日

MySQLのreplace構文

replace構文というのを最近知りました。

http://dev.mysql.com/doc/refman/5.1/ja/replace.html

REPLACE は、もしテーブル内の古い行が PRIMARY KEY か UNIQUE インデックスの新しい行と同じ値を持っていれば、古い行は新しい行が挿入される前に削除されるという事以外、INSERT と全く同じように機能します。


ということです。
主キーかユニークキーがあるテーブルに対して、既存レコードがある場合はupdate、レコードがない場合はinsertしてくれるというもの。

特定テーブルに対してデータの更新をする際なんか、最高に便利なんじゃないでしょうか。

自分はこういう場合、まず最初に既存レコードがあろうがなかろうが全件insertして、その後もう一度全件update、という無駄なことをやってましたが、それがこのreplace文なら一発で済むというわけです。

まだ実戦で使ってはいませんが、かなり使えそうです。

ここにも詳しく書いてありました。

http://f32.aaa.livedoor.jp/~azusa/index.php?t=mysql&p=replace

追記
INSERT ... ON DUPLICATE KEY UPDATE; というのもあるようです。
http://dev.mysql.com/doc/refman/4.1/ja/insert.html

2009年4月3日金曜日

mysqlで文字列の末尾からスラッシュを取り除く

関数使って簡単にできないかな~と思って調べてみたら、こんな感じでできることが分かりました。
SELECT TRIM(TRAILING '/' FROM column_name) FROM table_name
trim関数はいろいろと使えそうなので覚えておこうと思います。
参考
http://d.hatena.ne.jp/hosikiti/20090312/1236825301

2009年4月1日水曜日

ie6でページ内リンクが効かない


<a href="#hoge1">hoge1</a>
<a href="#hoge2">hoge2</a>
<a href="#hoge3">hoge3</a>
...
<a name="hoge1"></a>
hoge1 hoge1 hoge1 hoge1 hoge1 hoge1 hoge1 hoge1 
hoge1 hoge1 hoge1 hoge1 hoge1 hoge1 hoge1 hoge1 
hoge1 hoge1 hoge1 hoge1 hoge1 hoge1 hoge1 hoge1 
hoge1 hoge1 hoge1 hoge1 hoge1 hoge1 hoge1 hoge1 
...
<a name="hoge2"></a>
hoge2 hoge2 hoge2 hoge2 hoge2 hoge2 hoge2 hoge2 
hoge2 hoge2 hoge2 hoge2 hoge2 hoge2 hoge2 hoge2 
hoge2 hoge2 hoge2 hoge2 hoge2 hoge2 hoge2 hoge2 
hoge2 hoge2 hoge2 hoge2 hoge2 hoge2 hoge2 hoge2 
...
<a name="hoge3"></a>
hoge3 hoge3 hoge3 hoge3 hoge3 hoge3 hoge3 hoge3 
hoge3 hoge3 hoge3 hoge3 hoge3 hoge3 hoge3 hoge3 
hoge3 hoge3 hoge3 hoge3 hoge3 hoge3 hoge3 hoge3 
hoge3 hoge3 hoge3 hoge3 hoge3 hoge3 hoge3 hoge3 


こういう感じのページ内リンクが、ie6でのみ効かないという状況に遭遇しました。

厳密にはhoge1だけが有効で、hoge2,3が効かない、という症状です。
ググってみたところ、やはりie6のバグみたいです。
とりあえず、aタグの中が空だとうまく動かないという記事があったので、それにならってaタグの中に要素を入れてみたところ、うまく動くようになりました。

2009年3月24日火曜日

ie6ではclearを指定した要素の上マージンは0にする

floatを使ったレイアウトが原因不明の崩れ方をしており、「IE6 float 崩れる」でググってみたらこちらのページがヒット。
http://www.geocities.jp/multi_column/float/07.html
試しに「margin-top:0;」をしてみたら、見事解決。
普段はcssの一番最初に
*{ margin:0;padding:0;}
を指定してから書き始めるんですが、今回は既にある程度できあがったページを修正する仕事だったのでハマってしまいました。
こういうのはひたすら経験を積むしかないですね。

2009年3月6日金曜日

特定ディレクトリ以下のファイルを検索するLinuxコマンド(findとgrep)

特定ディレクトリ以下で
拡張子が.phpの
ファイル内に文字列「array_unique」がある
という条件のファイルを探すLinuxコマンドです。
ファイル名と該当する行を表示
find ./ -type f -name \*.php -print | xargs grep array_unique /dev/null
ファイル名だけ
find ./ -type f -name \*.php -print | xargs grep -l array_unique /dev/null
php5.2.9からarray_uniqueの挙動が変わるということで、このコマンドで検索してみました。
http://d.hatena.ne.jp/t_komura/20090228#1235808770
参考にしたページ
http://ryusai.hp.infoseek.co.jp/linux_cmd_grep.htm
http://www.ksknet.net/linuxai/find.html
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1315866533

2009年3月4日水曜日

放送が受信できません E202

BSデジタルを見ようとしたらこんな表示が出ました。
ググってみたらこれがひっかかりました。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1413667844
受信レベルが低いときに表示されるそうです。
今日は雪が降っているので、その影響かな。