Microsoft Access 掲示板

在庫数の算出 / 25

29 コメント
views
4 フォロー
25

質問ですが作成していただいたSQL文にx.~やy.~と記載されていますが
どのような意味があるのでしょうか。
(IIF関数に必要な条件のようなものでしょうか)

xy は、 エイリアス と言って
SQL文の中で、一時的に テーブルやクエリに 別の名前をつけています。

 x ---> 製品 ( 実在のテーブル )のこと
 y ---> ユニオンクエリ ( SELECT 入庫詳細.製品ID ... DateSerial( ... , 0 ) ) のこと

私がエイリアスを付与する理由は、主に以下のようなものになります。

【 1 】
SELECT 句や WHERE 句 など、各句の中で
列の名前を エイリアスで修飾( エイリアス名.列の名前 )すると
どのテーブルの列を 射影や選択といった操作の対象としているのか、明確になります。

【 2 】
画数の多いテーブルやクエリに 画数の少ないエイリアス を付与すると
オブジェクト修飾する記述を用いた際に
タイピングが楽(?)で、SQL の見映えがすっきりするという利点があります。( 多分 )

【 3 】
SQL 文中で使用するテーブルやクエリの名前に 予約語や記号などが含まれていて
Microsoft が推奨していない 命名規則 になっている場合、
( 例えば T-table とか T名前(hoge) とか currency とか )
オブジェクト修飾の際に [] で括る記述を強要されて 非常に見映えが悪いため、
( [T-table].列名 とか [T名前(hoge)].列名 とか [currency].列名 とか )
せめて SQL文の中だけでも、まともな命名規則のオブジェクト名を付与したい

【 4 】
複数のオブジェクトに共通して存在する名前の列 を操作する場合だけは
 オブジェクト名.列名
というように、
どのオブジェクトを操作するのか、明確に指定する必要がありますが
( 今回の場合だと 製品ID が該当し、オブジェクト修飾しないとエラーになります )
列によって、修飾したり しなかったりという記述にしてしまうと
長文 SQL の場合は、可読性が落ちますし、一貫性も欠如してしまいます。

 
ですから、単一のテーブルのみを使用している SQL では
エイリアスの付与も、オブジェクト名の修飾も不要です。

通報 ...