|
>>なぜこういった事を実現させたいのか?
>>請負った支払コード、金額=請負費に対して
>>外注払いする際別の支払いコード、金額を使いたい為(振替)です
単純に考えると、「氏名」テーブルに「請負時支払コード」、
「請負費」というフィールドを
新たに設ければいいように思いますが、それではダメなんでしょうか。
それはさておき、
>1.変更前に入力されている支払コードと金額は結果を出さない
>2.変更前から変更後に入力されている物は支払コードのみ振返る(解決)
>こうすると解決されるはずですが
>お示頂いたSQL文に1.を追加する際はどうすればよいですか?
>>>>氏名テーブル(元の名前です)
>>>>ID|支払コード|金額
>>>>1 |A0001 |300
>>>>2 |B0002 |400
>>>>3 |C0003 |1
>>>>4 |C0003 |500
>>>>5 |A0001 |300
このテーブルから変更前に入力されたレコードか、
変更後に入力されたレコードかを識別することはできません。
それを識別するためには、
変更前の入力か、変更後の入力がわかるためのフィールドを設ける必要が
あります。
おそらく、「入力日時」という日付時刻型のフィールドを設けることに
なるのでしょう。
また、変更がいつあったのかということもわからないと、
変更前か変更後かを識別できません。
したがって、「会社名称変換」テーブルにも
「変更日時」という日付時刻型のフィールドを設けることになると思います。
変更日時は、氏名テーブルのレコードごとに取得する必要があるので、
相関サブクエリを使うことになると思います。
次のクエリは、氏名テーブルと会社名称変換テーブルの双方にレコードがあり、
かつ、変更後のレコードを返します。
SELECT 支払コード, 金額
FROM 氏名テーブル AS T1
INNER JOIN 会社名称変換テーブル AS T2
ON T1.支払コード=T2.変更前
WHERE 入力日時>=
(
SELECT 変更日時
FROM 会社名称変換 AS T3
WHERE T2.ID=T3.ID
);
最終的なSQL文がどのようなものになるのかは何とも言えませんが、
会社名称変換テーブルにレコードがあるものとないものとをユニオンさせる
ユニオンクエリになりそうな気がします。
|
|