SQL舐めてた

自宅で作ったSQL、会社の Oracle では、動作しませんでした。
軽いショックを受けてます。
ということで、SQLっぽいのに作り直して、再度トライする予定。

こんなのに作りかえました。

select
u.売上先コード,
t.得意先名,
u.商品コード,
ss.商品名,
ss.規格,
u.売上単価,
s.仕入単価,
from
商品マスター ss , 得意先マスター t ,
得意先別商品売上台帳 u left join 得意先別商品仕入台帳 s
on ( u.売上先コード=s.売上先コード and u.商品コード=s.商品コード)
where ( ss.商品コード=u.商品コード)
and ( t.得意先コード=u.売上先コード )

前回は、where 句が長くなるのがいやで、副次問い合わせにしたのですが、いまいちでした。今回は、ちゃんと where に条件を指定してます。

SQLの副次問い合わせ

会社の仕事を自宅に持ち帰って...
のつもりだっtが、そんな難しいことはしないで、簡単なSQLの副次問い合わせでやることにしました。
自宅の Ubuntu の PostgreSQL で試しに作ったSQLを、会社の Oracle 用に習性して使う予定。

とりあえず、こんなのから。

select
u.売上先コード,
( select 得意先名 from 得意先マスター where 得意先コード=u.売上先コード ) as 得意先名,
u.商品コード,
( select 商品名 from 商品マスター where 商品コード=u.商品コード ) as 商品名,
( select 規格 from 商品マスター where 商品コード=u.商品コード ) as 規格,
u.売上単価,
s.仕入単価,
from 得意先別商品売上台帳 as u left join 得意先別商品仕入台帳 as s
on ( u.売上先コード=s.売上先コード and u.商品コード=s.商品コード)

売上側のテーブルと仕入側のテーブルが分かれているので、join でいっしょにして、表示するだけです。
これくらいは、これまでも簡単なWebシステムでやったことがある程度の私でもできそうな内容。
他に3つの案件を予定しているが、それらは、もうちょっと検討してからか。

実は、今日(11月23日)は、普通の土曜日のつもりで、会社でやる予定を組んでいた。祝日だったのでこれがキャンセル。ちょっと時間確保が難しくなった。12月までに達成できないのは、かなり痛い。
Oracle が自宅で使えたら...それはそれで忙しいだけでリラックスできないならNGか。

SQLは久々

会社のシステムをうまく使う方法を検討中。
以前、これ使ってください、と渡されたのは、Oracle の sqlplus を使ったCSVファイルを生成するスクリプトで、これを使ってなんとかできないか、とずっと思っていました。
ここにきて、やっと時間が取れるようになってので、ちょこっと試しているところ。

正直、これまでの経験では、SQLはDBからデータを取り出す単純なインターフェースとして使ってきたので、SQLだけで必要なデータを取りだすというのは、いまいち経験がない。
もらったSQLは、よくできているもので、SQLの演算機能をフルに活用している。参考になるな、と思ったものの、まずはデータの構造が分からないと何もできない、という状態。

これから調べてみます。

VBAのプログラム

土曜日は、ずっとのびのびになっていたVBAのプログラムを作成。

仕様は、Webシステムから出力した2つのテキストファイルを読み込んで、1つのシートにマージに、ピボットで集計し、検証用のシートを作成する、というもの。
ずっと手作業でやっているのだが、対象数が20を超えており、ずっと面倒だと思っていたのだが、なかなか時間がとれず、のびのびになっていた。

私のスタイルなのだが、マクロ用のシートを作成し、あるセルでファイル名を入力して、それを Excel VBA で作成した、ワークシートに取り込み、ピボットにする処理を、ボタンに貼り付ける。
ボタンを押すと、ピボットまで完了、というのを作成した。
ファイル名は、Excel のファイルブラウズツールから、持ってこれるようにした。

で、土曜日にやったのは、この処理の作成のみ。
見栄えがよくないので、後で整形する予定。
この整形に、半日くらいかかるのかな。

VBAプログラムは、結構得意としてきたと思っていたのだが、ここ1年ですっかり忘れていることが多く、今回も単純なことに気が付かずに時間がかかってしまった。
やはり、ブランクもあったのが痛い。たぶん、年齢もあるかもしれない。

なんとか時間を取って、スキルの継続に注意していかないと、何もできない親父になってしまいそうで、危機感を感じる。
ということで、PHP、JavaScriptのスキルも結構不安になってきた。
そういえば、CとJAVAのスキルは…
とにかく今できることに注力しないと。

GoogleマップAPIの利用例

先週から Google MAP API を使ったページを作成中です。
結局、平日は作業できなかったので、休みの日(祝日)にちょっと進めました。
JavaScript は、こんな感じです。オブジェクトの使い方にまだ改良の余地がありますが、とりあえず動きました。

var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
var map;

function initialize() {
directionsDisplay = new google.maps.DirectionsRenderer();
var latlng = new google.maps.LatLng( 38.241791,140.354632 );
var opts = {
zoom: 11,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}

map = new google.maps.Map(document.getElementById(“map_canvas”), opts);
directionsDisplay.setMap(map);
}

function calcRoute() {
var o_start = document.getElementById(“start_route”);
var start = o_start.options[o_start.selectedIndex].value;
var o_mid1 = document.getElementById(“mid1_route”);
var mid1 = o_mid1.options[o_mid1.selectedIndex].value;
var o_mid2 = document.getElementById(“mid2_route”);
var mid2 = o_mid2.options[o_mid2.selectedIndex].value;
var o_mid3 = document.getElementById(“mid3_route”);
var mid3 = o_mid3.options[o_mid3.selectedIndex].value;
var o_end = document.getElementById(“end_route”);
var end = o_end.options[o_end.selectedIndex].value;
var dist = 0;

var waypts = [];
if( mid1 != “-” ) {
waypts.push( { location: mid1, stopover: false } );
}
if( mid2 != “-” ) {
waypts.push( { location: mid2, stopover: false } );
}
if( mid3 != “-” ) {
waypts.push( { location: mid3, stopover: false } );
}

var request = {
origin: start,
destination:end,
waypoints: waypts,
optimizeWaypoints: true,
travelMode: google.maps.TravelMode.DRIVING
};

directionsService.route(request, function(result, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(result);
var dist = 0;
var dlegs = result.routes[0].legs;
for(var i in dlegs ) {
dist = dist + dlegs[i].distance.value;
}
var dist_km = dist / 1000;
document.getElementById(“distance”).value = dist_km;
}
});

}

HTML側をいっしょに載せないと意味ないですが、テキストから <SELECT>文をPHPで作って、JavaScript で Google MAP API を実装してみました。

下記参照URLを参照
Google MAP API の例その4

会社で、毎日、最上地区に配送で通っているドライバーの苦労が少しでも解れば、と思い、作ってみました。やっぱり、山形市から最上地区に行くとなると、遠いですね。ここに行ったら、こっちは今日は回れない、という話をよく聞くのですが、やっぱり無理でしょう。

他の地区についても、作ってみるのもおもしろいかな、と思ってます。