|
▼かるびの さん:
>>>なぜこういった事を実現させたいのか?
>>>請負った支払コード、金額=請負費に対して
>>>外注払いする際別の支払いコード、金額を使いたい為(振替)です
> 単純に考えると、「氏名」テーブルに「請負時支払コード」、
>「請負費」というフィールドを
>新たに設ければいいように思いますが、それではダメなんでしょうか。
>
>
> それはさておき、
>>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文がどのようなものになるのかは何とも言えませんが、
>会社名称変換テーブルにレコードがあるものとないものとをユニオンさせる
>ユニオンクエリになりそうな気がします。
お返事ありがとうございます
1.変更前に入力されている支払コードと金額は結果を出さない
(2つのテーブルから条件に一致しないデータ抽出)
2.変更前から変更後に入力されている物は支払コードのみ振返る(解決)
ググったら1についてはできました
URL貼り付けは禁止のようなのでSQL文を貼り付けます
SELECT * FROM 氏名 AS M left outer join 会社名称変換 AS S ON M.名前 = S.変更前
where S.変更前 is null
ただ1と2を組み合わせるにはどうしたらいいのか・・・
|
|