Microsoft Access で、「クエリデザイン」→「SQL ビュー」として直接以下のような SQL を叩くと、
SELECTFormat(Uri_day,'mm/dd') As Uri_day,Denpyo_noFROMT_UriageWHEREDenpyo_no = '001002'
なんか、「クエリ定義の SELECT で指定されている別名 'Uri_day' が循環参照を発生させています。」とエラーになる。
どうも、式(Format)の中で使っている列名(Uri_day)と同じ名前を、計算結果の別名には使えないようだ。別名を Uri_Uri_Day とかに変えたら上手くいった(笑)。
Excel でも同じようなエラーが出るケースがあるようなので、Microsoft べったりの開発者にとっては「常識」なのかな?
でも、つまりこれって、a = a + 1 とか、そういうことが出来ないっていうのと同じことじゃない?相当変な話やな(笑)
他の DBMS でもこんなことになるっけ?と思い、MySQL で似たようなことをやってみた。
mysql> SELECT-> DATE_FORMAT(cdate,'%m/%d') AS cdate,-> user_no-> FROM-> t_user-> WHERE-> user_no = 'AB129'-> ;+-------+---------+| cdate | user_no |+-------+---------+| 06/10 | AB129 |+-------+---------+1 row in set (0.01 sec)
ならんやん!!正常に実行された。
やっぱ、なんというか・・・Microsoft めぇ~な話やなあ(笑)。Microsoft の「常識」は社会の「非常識」(笑)
※ちなみに、VB.NET のプログラム内から同じ SQL で Access を参照してもエラーにはならない。
おいっ!Microsoft!!(^^;
※「循環参照」を「環境参照」って間違えてたことにさっき気づきました(^^; 単なる打ち間違いです。