過去の桐井戸端BBS (桐ver.9)
25340 併合で照合一致するレコードが複数あるときはどうすればいいのでしょうか Toppo 2004/03/09-22:32
いつもお世話になります。
併合で照合一致するレコードが複数あると、最初に出てくるレコードだけが
併合されることになりますが、こんな場合皆さんはどうしていますか?
1行ずつ絞り込んで併合を繰り返すのがいいのか、単一化絞り込みをして補集合でまた単一化して・・・・
(この場合何回単一化をしたのかを知る方法があるのか)
ほかにもいい方法があるのでしょうか?
どうかよろしくお願いいたします。
25346 Re:照合一致するレコードが複数ある併合について masa 2004/03/09-23:18
記事番号25340へのコメント
Toppoさん 今晩は

>併合で照合一致するレコードが複数あると、最初に出てくるレコードだけが
>併合されることになりますが、こんな場合皆さんはどうしていますか?
照合一致するもの全て変更になるのじゃないでしょうか?
照合項目がたくさんある場合という意味でしょうか?
(これもそれぞれの項目を照合させれますけど・・・)


25353 Re:照合一致するレコードが複数ある併合について 佐田 守弘 2004/03/10-01:05
記事番号25340へのコメント
Toppoさん
これについては、
masaさんが書かれている通りだと思います。
 >併合で照合一致するレコードが複数あると、
とは、併合元の表の意味か、併合先(併合される方)の表の事をいっているのかがはっきりしませんが、
いずれにしても対象となるレコードは全て併合されるはずです。総でないと併合の意味がありません。

●併合の仕組み
参考までに併合はどの様に行われるのか?を述べておきます。
(今まで何回か書いた事があるので、過去ログにも残っているはずです。)

併合では、併合元の表の先頭レコードから初めて、照合項目に指定された項目値を取り出し、
併合先の表の中から、合致するレコードを検索して行きます。
そして検索されたレコードがあれば、そのレコードに対して、複写等の併合操作を指定した項目に対して、
併合元から併合先へその操作を行います。
ここで併合先に重複禁止の索引があれば、1件検索されれば、
あとはもう該当するレコードがないので、そこで検索が終ります。
重複禁止でない場合には、併合先の表の最終行まで、検索と併合操作を繰り返します。
検索できなかった場合には、挿入が指定されている時には、併合元のレコードが併合先に挿入されます。

以上の操作を、併合元の表のレコードを順次移動しながら、繰り返します。
つまり、併合では総当たり的な検索と併合操作が行われます。

ですから、最初に見つかったレコードだけに対して併合操作が行われるのは
唯一、併合先の表で照合項目について重複禁止の索引が設定されていて、
該当するレコードは1件だけしか存在しない事が明確な場合だけです。

佐田守弘(KS-00119)
25359 Re:照合一致するレコードが複数ある併合について Toppo 2004/03/10-11:05
記事番号25353へのコメント
masaさん 佐田先生
ありがとうございました。
ご指導いただいたので改めてよく確認しました。
私の設定が間違っていました。数量の併合なのに「加算」ではなく「複写」に
していたので、最初のレコードではなく一致する最後のレコードを複写していました。
「加算」にするとバッチリ合計が合いました。
うっかりミスなのにお手をわずらわせてしまいました。
ありがとうございました。

戻る