• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:二つのテーブルの同期)

二つのテーブルの同期

このQ&Aのポイント
  • テーブル同期の方法について質問しています。
  • 選択したフィールドだけのCSVを出力するための方法を探しています。
  • 管理テーブルとSELECT文の同期を取る方法について悩んでいます。

質問者が選んだベストアンサー

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

そうですか、ユーザの便宜のためのテーブルなわけですね。 SQL Server 2008でしたね。。 テーブルレイアウトがわからないので、以下でサンプルを書きますので、適当に加工してください。 CREATE TABLE テーブルレイアウト ([テーブル名][sysname],[フィールド名][sysname],[定義体名][nvarchar](50)) DECLARE @tablename sysname='テーブル1' DECLARE @name nvarchar(50)='定義体1' MERGE テーブルレイアウト t1 USING (SELECT NAME FROM sys.columns WHERE OBJECT_ID=OBJECT_ID(@tablename)) c ON t1.テーブル名=@tablename AND t1.定義体名=@name AND c.NAME=t1.フィールド名 WHEN NOT MATCHED THEN INSERT VALUES (@tablename,c.NAME,@name) WHEN NOT MATCHED BY SOURCE AND t1.テーブル名=@tablename AND t1.定義体名=@name THEN DELETE;

SEsyo
質問者

お礼

まだ、同期を取る前に別の問題で止まってます、別で質問を出しますので こちらは一旦、締切ます。 進んで解らない場合は改めて質問をしますのでよろしくお願いします。、

その他の回答 (1)

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

その管理テーブルの目的は何ですか? ・エクスポートできる対象のテーブルを絞りたい ・エクスポートできる対象のフィールドを絞りたい 前者だけであればフィールドを管理する必要はないですよね 後者も含むのであれば、無条件にフィールドを追加・削除したらまずくないですか? また、いつ同期を取りたいのでしょうか? ・エクスポートが要求されたとき ・テーブルが変更されたとき 通常の発想ならば、後者かなとは思いますが。。

SEsyo
質問者

補足

一度エクスポートした設定を覚えておいて、次に同じテーブルが 指定されたら、その設定を表示させるためです。 (前回と同じ内容で良ければ、楽にエクスポート可能です) さらに、管理テーブルに「定義体名」というフィールドを作成し、 設定内容を登録できる様にする予定です。 「定義体名」がブランクのレコードは前回の設定の記録。 「定義体名」が入っているレコードは名前をつけて保存した記録です。 当然、同一テーブル、同一フィールードが複数存在します。 よって、フィールドの加除があれば記録されているレコードに 反映(同期)させないとそのままでは、追加された項目が選べなかったり、 無くなった項目を選んでエラーになったりします。 (実際のテーブルからフィールドが無くなったのだから、無条件に 消さないと、選べたらまずいと考えています) 同期するタイミングは CSVを選択出力する画面でテーブルが 選択されたら、同期を取った上で指定されたテーブルの 「定義体名」がブランクのレコードをリストボックスへ表示します。 また、テーブルではなく「定義体」が呼び出されたら、その時点で 対象テーブルの同期を取った上で指定された「定義体名」が入った レコードを同様に表示させます。

関連するQ&A