|
▼かるびの さん:
> これまでのところを整理してみたいと思います。
>
> どういうクエリを作りたいのかということが伝わっていません。
>
> これまでに示されたのは、
>>>>氏名テーブル(元の名前です)
>>>>ID|支払コード|金額
>>>>1 |A0001 |300
>>>>2 |B0002 |400
>>>>3 |C0003 |1
>>>>4 |C0003 |500
>>>>5 |A0001 |300
>というテーブルと
>>>>会社名称変換テーブル(元の名前です)
>>>>ID|変更前|変更後|
>>>>1 |C0003 |A0001
>というテーブルをベースにして、
>>>>結果クエリ
>>>>A0001 |600
>>>>B0002 |400
>というクエリを作りたいということですよね。
> そして、この結果クエリは、
>>>>1.変更前に入力されている支払コードと金額は結果を出さない
>>>>2.変更前から変更後に入力されている物は支払コードのみ振返る(解決)
>ということですね。
>
>
> これらを踏まえて質問です。
> 第1に、支払コードに関して、結果クエリで表示させたいフィールドは、
>計3つのフィールドのうち、どのテーブルの何というフィールドですか。
>なお、これは、作りたいクエリのSELECT句の問題です。
表示させたいのは氏名テーブルの支払コードです
> 第2に、結果クエリの第2フィールドの値は、
>氏名テーブルのどのフィールドについて、どのような集計を行った値なのですか。
>これも、作りたいクエリのSELECT句の問題です。
グループアップさせて金額は合計させています
> 第3に、それらのフィールドを表示させるためには、
>どのテーブルを使う必要がありますか。
>なお、これは、結果クエリのFROM句の問題です。
氏名テーブルと会社名称変換テーブルです
> 第4に、
>>SELECT M.名前, M.会社名, S.変更前
>>FROM 氏名 AS M LEFT JOIN 会社名称変換 AS S ON M.名前 = S.変更前
>>WHERE (((S.変更前) Is Null));
>というクエリが不一致クエリと呼ばれるクエリであることはわかっていますか。
>また、不一致クエリというのがどういうレコードを抽出するクエリかということは
>わかっていますか。
はい存じ上げています
> 第5に、結果クエリにおける集計対象に、
>氏名テーブルにおけるIDが1であるレコードと
>IDが5であるレコードとが含まれるのは、
>どういう抽出条件あるいは結合条件を設けるからですか。
コードが重複してる件?に関しては伝票番号だと思っていただければ
納得いただけると・・・
> 第6に、結果クエリという集計クエリにおいて、
>氏名テーブルにおけるIDが3であるレコードとIDが4であるレコードとが
>集計対象から除外されるのはどういう抽出条件あるいは結合条件を設けるからですか。
会社名称変換テーブルの変更前にあるコードが一致すれば結果クエリには表示させないとしたいからです
> 第7に、結果クエリという集計クエリにおいて、
>氏名テーブルにおけるIDが2であるレコードが集計対象に含まれるのは
>どういう抽出条件あるいは結合条件を設けるからですか。
会社名称変換テーブルの変更前フィールドのC0003をはぶいて
合計させた結果になります
> 第8に、第5〜7の質問を踏まえてですが、
>結果クエリにおいては、どのような抽出条件を設定したいのですか。
>
1.変更前に入力されている支払コードと金額は結果を出さない
2.変更前から変更後に入力されている物は支払コードのみ振返る(解決)
> これらのうちには、これまでのやり取りで答えが出ている質問もありますが、
>改めて、文章で考えてみてください。
> 文章で表現できれば、自ずとSQL文が見えてくるはずです。
1、解決済み
SELECT M.名前, M.会社名, S.変更前
FROM 氏名 AS M LEFT JOIN 会社名称変換 AS S ON M.名前 = S.変更前
WHERE (((S.変更前) Is Null));
2、解決済み
SELECT T1.名前, IIf(IsNull(T2.変更後)=True,T1.会社名,T2.変更後) AS 社名
FROM 氏名 AS T1 LEFT JOIN 会社名称変換 AS T2 ON T1.名前 = T2.変更前;
これらをうまく組み合わせれば実現しそうなんですが
なんどやってもわかりません
|
|