|
▼かるびの さん:
>方法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 長整数型又はオートナンバー型(主キー)
> 会社名 テキスト型
>というテーブル構成にした方がデータベース的です。
> 会社名の変更があった場合も、
>「会社名」テーブルの「会社名」フィールドの値を書き替えれば済むので、
>対応しやすくなります。
書いてなかったですが件数も置き換えしたいのですが
氏名テーブル
ID |名前|会社名 |件数
1 |太郎|太郎建設|100
2 |二郎|二郎建設|300
3 |一郎|一郎建設|10
4 |三郎|三郎建設|20
会社名称変換テーブル
ID|変更前 |変更後
1 |一郎建設|太郎建設
2 |二郎建設|太郎建設
現在の結果クエリ
|会社名 |件数
|太郎建設|410
|三郎建設|20
希望の結果クエリ
|会社名 |件数
|太郎建設|100
|三郎建設|20
何度も申し訳ありませんが
ご教授頂ければ幸いです
|
|