mayu
2020/01/27 (月) 17:59:16
9b175@61ad5
質問ですが作成していただいたSQL文にx.~やy.~と記載されていますが
どのような意味があるのでしょうか。
(IIF関数に必要な条件のようなものでしょうか)
x や y は、 エイリアス と言って
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 では
エイリアスの付与も、オブジェクト名の修飾も不要です。
通報 ...