0

次のテーブルがあります。

ダイアリーテーブル

履歴表

最近、[History Table ID] 列を追加し、Foreign Key Reference を History テーブルに追加しました。[履歴テーブル ID] 列の値を履歴テーブルの ID 値で更新する必要があります。History テーブルの Description 列に Diary テーブルの ID を持つエントリである 2 つのエントリで、既に正しく取得できています。以下のクエリは、次のことを実現します。

Update Diary 
SET [History Table ID] = History.ID
from History with (nolock)
WHERE [Lookup Table HA] = 7 
and [Lookup Table HAS] = 19 
and Description LIKE 'Diary item (%'
and PATINDEX('%)%', Description) > 13
and Dairy.ID = SUBSTRING(Description, 13, PATINDEX('%)%', Description)-13)

残りを更新する方法はありますか?私はこれについて頭を悩ませることができません。

前もって感謝します。

アップデート:

更新されたテーブル ショットについては、以下を参照してください。

更新された日記と歴史

4

2 に答える 2

0

Global Idおそらくこれは正しくありませんが、 (およびIssue number) が 2 つのテーブルを接続しているように見えます。もしそうなら、あなたはすることができます:

Update Diary 
    SET [History Table ID] = History.ID
    from History with (nolock)
    WHERE Diary.[Global ID] = History.[Global ID] and
          Diary.[Issue number] = History.[Issue number];

Historyそれ以外の場合は、1 つのレコードをテーブル内のレコードに接続するロジックを理解する必要がありDiaryます。

編集:

複数の一致がある場合に最大の履歴 ID が必要であると仮定します。

Update Diary 
    SET [History Table ID] = h.ID
    from (select [Global ID], [Issue number], max(id) as maxid
          from History with (nolock)
          group by [Global ID], [Issue number]
         ) h 
    WHERE Diary.[Global ID] = h.[Global ID] and
          Diary.[Issue number] = h.[Issue number];
于 2013-08-26T12:03:29.747 に答える