トップページに戻る    DSP受験記    記事(OTN)    記事(CodeZine)    MSDN C#    @IT C#入門
2006年 2月16日から2007年 7月28日までのブログ
2007年 8月 1日から2007年10月28日までのブログ
2007年10月20日から2008年 5月 8日までのブログ
2008年 5月22日から2008年 9月 3日までのブログ
2008年 9月 4日から2009年 2月 4日までのブログ
2009年 2月 7日から2009年 5月20日までのブログ
2009年 5月22日から2009年 7月13日までのブログ
2009年 7月15日から2009年11月11日までのブログ
2009年11月14日から2010年 3月13日までのブログ
2010年 3月15日から2010年 7月21日までのブログ
2010年 7月24日から2011年 3月29日までのブログ
2011年 3月30日から2012年 1月11日までのブログ
2012年 1月18日から2014年 3月18日までのブログ
2014年 3月21日から2014年11月15日までのブログ
2014年11月22日から2015年 3月 1日までのブログ
2015年 3月15日から2015年 5月30日までのブログ
2015年 6月 7日から2018年 4月24日までのブログ
2018年 7月21日から2021年 2月19日までのブログ
最新のブログ

●2007年10月22日
階層問合せによるデータの取得
投稿したクエリを見て知りましたが、
クエリで分析関数を使っても、RowID擬似列は伝播するんですね。

さらに、以下の例で、RowID擬似列は失うのか調査してみた。

SQL> create table TestTable(
  2  ID    number(1),
  3  preID number(1));

表が作成されました。

SQL> insert into TestTable values(1,null);

1行が作成されました。

SQL> insert into TestTable values(2,1);

1行が作成されました。

SQL> insert into TestTable values(3,1);

1行が作成されました。

SQL> insert into TestTable values(4,2);

1行が作成されました。

SQL> select RowID
  2    from (select 1 as Val
  3            from TestTable);

ROWID
------------------
AAAdrfAAfAAAAhPAAA
AAAdrfAAfAAAAhPAAB
AAAdrfAAfAAAAhPAAC
AAAdrfAAfAAAAhPAAD

SQL> select RowID
  2    from (select distinct 1 as Val
  3            from TestTable);
select RowID
       *
行1でエラーが発生しました。:
ORA-01446: cannot select ROWID from, or sample, a view with DISTINCT, GROUP BY, etc.

SQL> select RowID
  2    from (select 1 as Val
  3            from TestTable
  4           group by 1);
select RowID
       *
行1でエラーが発生しました。:
ORA-01446: cannot select ROWID from, or sample, a view with DISTINCT, GROUP BY, etc.

SQL> select RowID
  2    from (select count(*)
  3            from TestTable);
select RowID
       *
行1でエラーが発生しました。:
ORA-01446: cannot select ROWID from, or sample, a view with DISTINCT, GROUP BY, etc.

SQL> select RowID
  2    from (select count(*) over()
  3            from TestTable);

ROWID
------------------
AAAdrfAAfAAAAhPAAA
AAAdrfAAfAAAAhPAAB
AAAdrfAAfAAAAhPAAC
AAAdrfAAfAAAAhPAAD

SQL> select RowID
  2    from (select ID
  3            from TestTable
  4          Start With preID is null
  5          connect by prior ID = preID);
select RowID
       *
行1でエラーが発生しました。:
ORA-01446: cannot select ROWID from, or sample, a view with DISTINCT, GROUP BY, etc.

SQL> select RowID
  2    from (select count(*) over() as Val
  3            from (select 1 as Val
  4                    from TestTable));

ROWID
------------------
AAAdrfAAfAAAAhPAAA
AAAdrfAAfAAAAhPAAB
AAAdrfAAfAAAAhPAAC
AAAdrfAAfAAAAhPAAD

SQL> create or replace view testView as
  2  select count(*) over() as Val
  3    from (select 1 as Val
  4            from TestTable);

ビューが作成されました。

SQL> select RowID from testView;

ROWID
------------------
AAAdrfAAfAAAAhPAAA
AAAdrfAAfAAAAhPAAB
AAAdrfAAfAAAAhPAAC
AAAdrfAAfAAAAhPAAD


●2007年10月24日
ペースト君のVB2005版を作ってみた。


●2007年11月2日
ついに発売された、SQLパズル 第2版を読んでます。
『SQLパズル 第2版』サポートページまで用意されて、いたせりつくせりです。

SQLの本の最高峰といっても過言ではないでしょう。

いろいろ検索してたら
導師の動画を発見しました。なんて渋い・・・
YouTube


●2007年11月6日
旅人算の感覚を使う方法を
またしても投稿してみた。
Sum over group
ミスったので修正
最初のクエリは、必ず進む旅人との距離だけでグループ化したのが間違い
旅人の種類と、必ず進む旅人との距離でグループ化しなければならない。
9-52 最大のリージョンを求める(境界なし)

いいかえると、必ず進む旅人との距離だけでグループ化すると
旅人が混ざることがあるから間違い


●2007年11月7日
ブール代数の補元法則を使った正規表現
5-17 スラッシュの前の最初の数字列以外を消去

10-191 葉であるか葉でないかで論理演算
葉であることは、葉でないことの余事象なので
  _
A+A*B = A+B
を使ったのと似た考え方であったりします。

■■■■■■■■■■■■■■■■■■■■■■■■■■■■
正規表現で、
条件Aを満たせば、文字列Xを取得
条件Aを満たさず条件Bを満たせば、文字列Yを取得
条件AもBも満たさず条件Cを満たせば、文字列Zを取得

みたいなのは、
検索では、可変の戻り読みが使えないとおそらく無理ですが
置換なら可能ですね。

難問編のパズルネタとしよう。


●2007年11月8日
having句の力と
存在肯定命題と
ブール代数
の組み合わせを、またしても投稿してみた。

having句にこだわったexists述語といってもいいだろう。
Help with Corelated sub-query

10-169 having句にこだわったupdate文


●2007年11月9日
この形式は、create table as でも使えたんですね。

SQL> create table aaaa(ColA,ColB) as
  2  select 1,2 from dual;

表が作成されました。

SQL> desc aaaa
 名前   NULL?    型
 ------ -------- -------
 COLA            NUMBER
 COLB            NUMBER


●2007年11月10日
Carry Forward
調子にのって英訳してみた。
もっと英語を勉強して、OracleSQLパズルの英語版を作ろうと思った。


●2007年11月15日
やる気”のくじき方入門


●2007年11月19日
Oracle Mix
佐藤さんのブログで紹介されていたのを見て、

https://mix.oracle.com/user_profiles/11526-aketi-jyuuzou
登録してみた。


●2007年11月21日
Query re-write in a different fashion
関係代名詞と間接疑問文を使ってみた。
多分あってるはず。


●2007年11月23日
英語の勉強に
Using <> or != on a NULL 


●2007年11月27日
新しくブログを作ってみました。
明智重蔵のOracleMaster受験記


●2007年12月7日
translate関数の興味深いスレ
SQL command + to select the Number from a string


●2007年12月12日
Advanced Oracle SQL Programming
欲しいのですが、2008年12月発売らしい


●2007年12月13日
本屋でNHKのインドの衝撃を買ってくる。

CodeZineの執筆記事の
分析関数の衝撃
の記事名はここから取ってたりする。

しかし、
正規表現の記事は、
正規表現の問題集
とするつもりです。


●2007年12月16日
outer union (外和集合演算)
について調査してみる。
9-63 導出テーブルを減らせ

立ち読みしてくる本
データベースがわかる本


●2008年1月10日
1ヶ月間だけ、思い切りがんばれば。


●2008年1月11日
メモ
SQLと量子化について、もう一度勉強して、標準SQLで解いてみる。
青チャートの95ページをまとめる。

how to change the column datatype to number from varchar2 in oracle10g
char(10)をchar(5)に変更する方法も面白い

データ削除せずに途中に項目を追加するには?


●2008年2月3日
ハピラボ - 幸せ人生研究所


●2008年2月4日
達人に学ぶ SQL徹底指南書の見本誌をいただきました。

さっと流し読みしましたが、まさに、SQLの初級者をレベルアップさせる本といえるでしょう。
じっくり読んでいこうと思います。

私の記事も、CodeZineBooks化されるように頑張ろう。


●2008年2月18日
String aggregation exceeding 4000 char


●2008年2月21日
how to get every first letter from a string


●2008年2月27日
Regular Expression: a new impossible mission ?

union allとgroup byによるouter unionもどき


●2008年3月12日
[oracle] 英語でしゃべらナイト 3/17オンエア
佐藤さんのブログによると
3月17日の23時からオンエアされるらしい

早寝早起きな私ですが
ウェンディーが出るので見てみよう。

I get up in early time.
I go to bed in early time.
However I will watch this TV program because I want to watch Wendy.


●2008年3月14日
まつもとゆきひろ×小飼弾対談 生き残るエンジニアとは?
>小飼氏は、まつもと氏の発言を受け、
>「違いにこそ価値があるのに違うだけではお金を取れない。その部分というのが『言語』だと思う。
>違っているだけではだめで、違っていることを誰にでも分かるような形で示すことで価値を示せる。
>誰にでも分かるが自分にしかできないものがある人が最強」と語った。

納得です。
ナンバーワンになったら
オンリーワンを目指すということでしょうか。


●2008年3月26日
ローラン・シュナイダー氏のブログで紹介されていた
数学の問題をプログラムで解くサイト。

RubyとOracle(PL/SQLかSQL)で挑戦しようと思う。

Project Euler
Project EulerにOracleで挑戦するスレッド


●2008年4月4日
SOAエンジニア 募集中
SOAのことは、よく分かりませんが、ウェンディの銅像なんてあるんですね。


●2008年4月11日
詳説 正規表現 第3版

>正規表現がこれだけ多種多様な言語やアプリケーションに取り入れられているのは、
>立派な理由があるからだ。
>正規表現は非常に強力なのだ。
>(中略)正規表現を使えば、データを自由に操れるようになる。
>データをコントロールし、自分のための仕事をさせられるのである。
>正規表現をマスターすることは、自分のデータを支配することなのだ。」
>(本書「はじめに」より)

アルゴリズムの絵本
いずれ買いたい


●2008年4月11日
全称肯定命題のサンプル1
全称肯定命題のサンプル2
US-OTNに出没してみた。(サブメインな出没箇所ですが)

min(case when 条件 then 1 else 0 end) = 1

----------------------------------------------------
存在否定命題に変換すると

max(case when 条件 then 0 else 1 end) = 0


●2008年4月14日
クロスジョインとPartitioned Outer Join

havingの力を意識して、
クロスジョインの力
という記事を書いてみようかと思ったが止めた。

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
サラリーマン受験生応援専科


●2008年4月15日
ORACLE Twilight 攻略、バックアップ・リカバリ
に参加してきました。

バックアップ・リカバリは、
OracleMasterDBA10gGoldの最も配点が高いジャンルなので、
その、エピソード記憶を作るという目的です。

内容は、ほとんど理解できて、いい復習になりました。

帰りに、ウェンディの銅像を見かけました。
携帯のカメラで撮影しようと思ったが、
さすがに止めた。

Goldの試験が終わったら、
今度は、PL/SQLのセミナーを受けようと思います。


●2008年4月19日
WEB+DB PRESS Vol.44
SQLアタマ養成講座


●2008年4月30日
All possible combinations of String in PL/SQL


●2008年5月2日
詳説 正規表現 第3版を買ってきました。
OracleGoldの試験は6月中に合格するとして、読むのは7月


●2008年5月8日
SQLパズル2版の169ページをふまえて、冗長な必要条件をつける実験
結果としては、Oracleではチューニングの効果はないようだ。
CodeZineの記事を書くタイミングでMySQLとDB2をインストールするので、
Oracle以外でも試したいと思う。

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
集合同士の結合を脳内でイメージするコツ

内部結合と外部結合の順序によって結果が違うようですね。
どうやら、外部結合が先なんでしょうか?

まあ、最終的にb.MKEY = c.MKEYを満たさない行が戻るのは、おかしいので、
脳内でイメージする際には、
外部結合を先にイメージするとよさそうですね。

create table Table1(key1) as
select 'AAA' from dual union
select 'CCC' from dual;

create table Table2(Key1,MKEY) as
select 'AAA',111 from dual union
select 'BBB',222 from dual;

create table Table3(MKEY) as
select 111 from dual union
select 222 from dual;

select a.key1 as akey,b.key1 as bkey,b.MKEY as bmkey,c.MKEY as cmkey
  from Table1 a,Table2 b,Table3 c
 where b.MKEY = c.MKEY
   and a.key1 = b.key1(+);

AKE■BKE■BMKEY■CMKEY
---■---■-----■-----
AAA■AAA■  111■  111

select a.key1 as akey,bkey,bmkey,cmkey
from (select b.key1 as bkey,b.MKEY as bmkey,c.MKEY as cmkey
        from Table2 b,Table3 c
       where b.MKEY = c.MKEY) b,Table1 a
 where a.key1 = b.bkey(+);

AKE■BKE ■BMKEY■CMKEY
---■--- ■-----■-----
AAA■AAA ■  111■  111
CCC■null■ null■ null

select a.key1 as akey,b.key1 as bkey,b.MKEY as bmkey,c.MKEY as cmkey
  from Table2 b join Table3 c
    on b.MKEY = c.MKEY
 right join Table1 a
    on a.key1 = b.key1;

AKE■BKE ■BMKEY■CMKEY
---■--- ■-----■-----
AAA■AAA ■  111■  111
CCC■null■ null■ null


OracleMaster   TOEIC   執筆記事   オライリー   翔泳社SHOP   正規表現   ブール代数   DB2   PostgreSQL   C#