PHPの復習

今日、SQLの調べ物をやったのに引き続き、PHPの復習もやろうと思い立ち、ちょっとだけ簡単なのを作ってみました。

最後にPHPのプログラムを書いてからかなり経つような気がします。たぶん、1年以上触っていないはず。
そのため、Web上のマニュアルを見ないと、まったく書けませんでした。

前の会社でもなかなか書く機会が無くて、スキルを維持するのに苦労してたのですが、山形に戻って新しい会社に入って移行は、全く書く機会が無いので、すっかり忘れてました。

少しずつ書いているうちに思い出したり、マニュアルの例を引き写したりして、簡単な例を作ってみました。

load_dat();
$ret = $this->view_dat();
} catch (Exception $e) {
echo “エラー:”,$e->getMessage(),”\n”;
}
}

public function load_dat() {
$fp = fopen( $this->dat_filename, “r”);
$i = 0;
if( $fp ) {
while(($buffer = fgets($fp)) !== false ) {
$this->try_datas[$i] = rtrim( $buffer );
$i = $i + 1;
}
$this->try_count = $i;
fclose($fp);
} else {
throw new Exception(“ファイルを読み込みできません”);
return;
}
}

public function view_dat() {
if( $this->try_count == 0 ) {
throw new Exception(“データを読み込みできていません”);
return;
}
for($i=0; $i < $this->try_count; $i++ ) {
echo $this->try_datas[$i];
echo “\n”;
}
}

}
?>

SQLの調べ物

できるだけ時間を取ってスキルの維持を、と思っているのですが、なかなか思ったようにいきません。
今日は、久々にSQLの調べ物をしたので、そのメモ。

今日のテーマは、SQLでの副次問い合わせと、それを LEFT JOIN で別の表にくっつけて、条件を指定して表示する。ただし、副次問い合わせした表には、データが無い箇所があり、それも表示する。

最初は、副次問い合わせだけでいけるかと思っていたのだが、いろいろやってみると、 LEFT JOIN でくっつけた方がいいことが解った。たぶん、SQLに詳しければ、すぐに解ったのだろうが、この辺は私が、まだちゃんと理解していないということだ。

しかも、データが無いところは、WHERE 句で、IS NULL で調べる、というのも忘れていた。こういうのをスキルが風化している、というのだろうか。
日々、学習が必要dとあらためて感じた。

今日作ったSQLはこんなの。
select
商品.商品コード,
商品.商品名,
在庫.在庫数,
出入.出入数
from
在庫 left join ( select
count(入出庫.商品コード) as 出入数,
入出庫.商品コード
from 入出庫
where
(( 入出庫.日付 > ‘2014-01-01’ ) and ( 入出庫.日付 < '2014-03-01' )) group by 入出庫.商品コード ) 出入 on 在庫.商品コード = 出入.商品コード, 商品 where ( 在庫.商品コード = 商品.商品コード ) and (( 出入.出入数 is null ) or ( 出入.出入数 < 2 )) and ( 在庫.在庫数 > ‘0’ )
;

SQLの調べ物

2012年に前の会社の辞めて、山形に戻って12月末から再就職した会社に勤めてますが、以前と違い、仕事でプログラムを書くことは激減してます。これは、かなり危機的な状況、と思っているのですが、残業続きでなかなか自分の時間が取れないこともあり、なにもできてませんでした。

最近、時間がとれるようになったのと、今の仕事も次のステップに移行しつつあるので、この機会にプログラムもやろうと思ってます。

ということの一環で、今日は、自宅でSQLのトレーニングをしました。
今、会社で使っているシステムは、SQLを使って必要なデータを取ることが可能です。それを積極的に使って、システムで用意されていない帳票とかを Excel と連携して作れるして、仕事に使っていこう、と思ってます。

ですが、私はここ10年くらい、SQLの初心者でした。簡単なクエリーは組めるのですが、複雑な処理はSQLではなく、PHPで組んできたので、副次問い合わせとかは、実は解っていませんでした。

今日も、この辺でハマってしまい、いろいろと試行錯誤してました。
結局、複雑なことをする必要はなく、group by 句と having 句で簡単にできそうなめどがついてます。

来週、会社で試してみて、仕事に活用できたらいいな。