|
方法1
SELECT T1.名前
,IIF(IsNull(T2.変更後)=True
,T1.会社名
,T2.変更後
) AS 社名
FROM 氏名 AS T1
LEFT JOIN 会社名称変換 AS T2
ON T1.会社名=T2.変更前
方法2
SELECT T1.名前
,T1.会社名
FROM 氏名 AS T1
LEFT JOIN 会社名称変換 AS T2
ON T1.会社名=T2.変更前
WHERE T2.変更後 Is Null
UNION ALL
SELECT T3.名前
,T4.変更後
FROM 氏名 AS T3
INNER JOIN 会社名称変換 AS T4
ON T3.会社名=T4.変更前
でも、どっちの方が速いんだろうか。
方法1だと、IIF関数を使う点で遅そうだし、
方法2だと、抽出条件で Is Null を使う点で遅くなりそうだし、
また、ユニオンクエリだという点で時間が余計にかかりそうだし。
なお、従来の氏名テーブルを分けて、
「名前」テーブル
名前ID 長整数型又はオートナンバー型(主キー)
名前 テキスト型
会社ID 長整数型
「会社名」テーブル
会社ID 長整数型又はオートナンバー型(主キー)
会社名 テキスト型
というテーブル構成にした方がデータベース的です。
会社名の変更があった場合も、
「会社名」テーブルの「会社名」フィールドの値を書き替えれば済むので、
対応しやすくなります。
|
|