MW211 EXIT

devlog
PostgreSQL/本日の正午を求める
2012年06月14日
┌──────────────────────────────────────┐
│SELECT CURRENT_DATE + INTERVAL '12:00';                                     │
└──────────────────────────────────────┘

他の時刻も自由自在。
┌──────────────────────────────────────┐
│SELECT CURRENT_DATE + INTERVAL '13:30:59';                                  │
└──────────────────────────────────────┘
分類:PostgreSQL
PostgreSQL/最大値を更新(1)
2012年06月13日
「更新表.最大」に「入力表.値」を更新しようとするのだが、
「入力表.値」が「更新表.最大」よりも大きい時という条件が付く場合。
(最大値を随時比較して更新していく場合などがこのパターンとなるだろう)
┌──────────────────────────────────────┐
│UPDATE 更新表                                                               │
│  SET 最大 = COALESCE((SELECT 入力表.値                                     │
│                         FROM 入力表                                        │
│                         WHERE 入力表.キー = 更新表.キー                    │
│                           AND (入力表.値 > 更新表.最大                     │
│                             OR 更新表.最大 IS NULL)                        │
│                      ),                                                    │
│                      最大);                                                │
└──────────────────────────────────────┘

「入力表.値」が複数あって最大値を集計した上でという場合には以下の通り。
┌──────────────────────────────────────┐
│UPDATE 更新表                                                               │
│  SET 最大 = COALESCE((SELECT MAX(入力表.値)                                │
│                         FROM 入力表                                        │
│                         WHERE 入力表.キー = 更新表.キー                    │
│                         HAVING MAX(入力表.値) > 更新表.最大                │
│                             OR 更新表.最大 IS NULL                         │
│                      ),                                                    │
│                      最大);                                                │
└──────────────────────────────────────┘

もしかしてもっと簡単な方法がある?
分類:PostgreSQL
jQuery/表示と非表示
2012年06月08日
行の表示・非表示を切り替えたいので、以下のように実装してみた。
┌───┬──────────────────────────────────┐
│ 表示 │$('tr').css('display', 'block');                                    │
├───┼──────────────────────────────────┤
│非表示│$('tr').css('display', 'none');                                     │
└───┴──────────────────────────────────┘

ところが、IEではうまくいくのに、FirefoxやChromeだと
再表示(非表示→表示)の時にテーブルイメージが崩れてしまう。
どうも、再表示時に、元に戻るのではなく、
下の階層に追加されるような感じになっているっぽい(よくわからんが)。

困ったなと思ったところ、jQueryではこれらへの対応がなされているらしく、
以下で代替したら、想定通り再表示時に元に戻った。
┌───┬──────────────────────────────────┐
│ 表示 │$('tr').show();                                                     │
├───┼──────────────────────────────────┤
│非表示│$('tr').hide();                                                     │
└───┴──────────────────────────────────┘

ちなみに、「A」属性の行を非表示にするチェックボックスは以下のようになる。
┌──────────────────────────────────────┐
│$('#notA').click(function() {                                               │
│  if ($(this).prop('checked')) {                                            │
│    $('tr.A').hide();                                                       │
│  } else {                                                                  │
│    $('tr.A').show();                                                       │
│  }                                                                         │
│});                                                                         │
└──────────────────────────────────────┘
分類:jQuery
PostgreSQL/数値を文字列化
2012年06月07日
PostgreSQLで数値を文字列化するには、「to_char()」を使ったりする。
┌──────────────────────────────────────┐
│to_char(数値, '99')                                                         │
└──────────────────────────────────────┘

でも、書式を明記しなければならず、以下のような場合はエラーとなる。
┌──────────────────────────────────────┐
│to_char(数値)                                                               │
└──────────────────────────────────────┘

一方、文字列結合「||」を使うと、数値も文字列に変換してくれる。
┌──────────────────────────────────────┐
│数値 || 数値                                                                │
└──────────────────────────────────────┘

ということで、以下のように空文字と結合させれば、数値を書式なしで文字列化できる。
┌──────────────────────────────────────┐
│数値 || ''                                                                  │
└──────────────────────────────────────┘

でも、なんかこれって裏技っぽい。

キャストしてしまうって手もあるが、これも裏技っぽい。
┌──────────────────────────────────────┐
│数値::text                                                                  │
└──────────────────────────────────────┘

「to_char(数値, '')」とかしてみてもダメ。

ま、そんなもんなのかな。。。
分類:PostgreSQL
CSS/z-indexには…
2012年06月06日
「z-index:1」には「position:relative」を忘れずに。
#他に「position:absolute」でも「position:fixed」でもいいけど。

これらがないと「z-index」はいくら指定しても効きません。

はまりました。。。
分類:CSS
PHP/配列に追加
2012年06月05日
ある配列に値を追加していきたいのだが、既に値があるものは回避して
新入りだけを追加したい場合の方法(もっと簡単な方法がありそうだが)。

【案1】とりあえず追加だけしちゃって一意にしなおす方法
┌──────────────────────────────────────┐
│$配列[] = $値;                                                              │
│$配列 = array_unique($配列);                                                │
└──────────────────────────────────────┘
これだと、結構キー(添字)が歯抜けになってしまうので、
「array_merge(array_unique($配列))」も併用したいところ。

【案2】追加前にないことを確認する方法
┌──────────────────────────────────────┐
│if (!in_array($値, $配列)) {                                                │
│  $配列[] = $値;                                                            │
│}                                                                           │
└──────────────────────────────────────┘
分類:PHP配列
PHP/array_unique()にはarray_merge()を
2012年06月04日
┌──────────────────────────────────────┐
│array_unique($配列)                                                         │
└──────────────────────────────────────┘
だけだとキーが歯抜けになる

でも、さらにこうすると
┌──────────────────────────────────────┐
│array_merge(array_unique($配列));                                           │
└──────────────────────────────────────┘
前詰になる。
分類:PHP配列
PHP/list()の反対はarray()
2012年06月03日
┌──────────────────────────────────────┐
│list($a, $b, $c) = array($a, $b, $c);                                       │
└──────────────────────────────────────┘
だね。
分類:PHP配列
PHP/foreach文の誤記(?)
2012年06月01日
┌──────────────────────────────────────┐
│foreach($data as $value) {                                                  │
│  if ($value) {                                                             │
│    echo $value;                                                            │
│  }                                                                         │
│}                                                                           │
└──────────────────────────────────────┘
普通はこんな感じで書く、foreach文を以下のようにも書けるらしい。
┌──────────────────────────────────────┐
│foreach($data as $value):                                                   │
│  if ($value) {                                                             │
│    echo $value;                                                            │
│  }                                                                         │
│endforeach;                                                                 │
└──────────────────────────────────────┘

先日、意図せずしてこんな感じで書いてしまったら動いていた。
(エラーにならないので気づかなかった)
┌──────────────────────────────────────┐
│foreach($data as $value)                                                    │
│if ($value) {                                                               │
│  echo $value;                                                              │
│}                                                                           │
└──────────────────────────────────────┘

ま、以下みたいなもんなんだろうけど、「;」がないif文だからなんかややこしい。
┌──────────────────────────────────────┐
│if ($value)                                                                 │
│  echo $value;                                                              │
└──────────────────────────────────────┘
分類:PHP
PostgreSQL/0を除く最小値(2)
2012年05月30日
ということで、NULLを含む列についての0を除く最小値を求める方法。
┌──────────────────────────────────────┐
│SELECT CASE                                                                 │
│           WHEN MIN(列) IS NULL THEN NULL                                   │
│           ELSE                                                             │
│               COALESCE(MIN(CASE                                            │
│                                WHEN 列 = 0 THEN NULL                       │
│                                ELSE             列                         │
│                            END), 0)                                        │
│       END AS 列                                                            │
│    FROM 表                                                                 │
│    GROUP BY キー                                                           │
└──────────────────────────────────────┘
ちと条件分岐が強引か。。。

すべてNULLならNULL、1以上を一つでも含んでいればその最小値、
さもなくば0となる。(なんか初心者のような条件分岐の説明だなぁ)

とにかくやりたいことは満たせるはず。

ちなみに、すべてNULLを判定する式は一般的にはCOUNT()を使うのが自然かも。
┌──────────────────────────────────────┐
│SELECT CASE                                                                 │
│           WHEN COUNT(列) = 0 THEN NULL                                     │
│           ELSE                                                             │
│               COALESCE(MIN(CASE                                            │
│                                WHEN 列 = 0 THEN NULL                       │
│                                ELSE             列                         │
│                            END), 0)                                        │
│       END AS 列                                                            │
│    FROM 表                                                                 │
│    GROUP BY キー                                                           │
└──────────────────────────────────────┘
ま、意図するところを伝えるのなら前出のMIN()の方がわかりやすいかな。
分類:PostgreSQL
前へ 1 … 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 … 156 次へ