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

二つのテーブルの同期

jamshid6の回答

  • ベストアンサー
  • 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
質問者

お礼

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

関連するQ&A

  • 選択したフィールドだけのCSVを出力

    ACCESS2003とSQLserver2008を使っています。 エンドユーザが画面でフィールド名を選択して、必要なフィールドだけ のCSV(エクセル)を出力したいのですが、そんなツールはないでしょうか? 作り込むとしたら、ストアドでSELECT文のフィールド名やテーブル名に 変数を使うことは可能でしょうか? (試したらフィールド名自体が件数分表示されました、テーブルは エラーになりました) また、どこかにサンプルなどはないでしょうか?

  • ストアドから別のストアドを作成できますか?

    パラメータ付きストアドから、そのパラメータを展開したSELECT文のストアドを作成する事は可能でしょうか? アクセスのデータシートビューを表示するにはパラメータがあっても指定出来ないようなんです。 「DoCmd.OpenStoredProcedure」でパラメータ付きのストアドを実行すると、 パラメータ用のインプットボックスが表示されその都度入力しなくてはなりません。 そこで、アクセスから@フィールド名 と @テーブル名 をパラメータとしてストアドを実行し、 ストアドで「SELECT @フィールド名 from @テーブル名」パラメータを展開したSELECT文にして、 別の名前を付けたパラメータ無しのストアドとして登録し、そのストアドを アクセスの「DoCmd.OpenStoredProcedure」で実行すれば、目的のデータシートビューを表示出来ると考えました。 ストアドからストアドを作成できるのでしょうか、可能であれば方法を教えて下さい。

  • 数種類のテーブルの呼び出し

    こんにちは。 全く違うフィールドを含む数種類のテーブルを全て呼び出して一覧表示するためにはどういった命令を実行すればよいのでしょうか? selectはsql文の中で一度しか使えないということはわかったのですが・・・ 例えばテーブル1(フィールドはnumber,name)テーブル2(フィールドはdate,time) とした時、出力される結果としては テーブル1 number,name テーブル2 date,time ということです。 select文を2回使えるのであれば、 $sql = "select * from テーブル1 and select * from テーブル2"; という命令でいけると考えたのですが・・・

  • テーブルの項目名を変数にするには?

    <開発環境> WindowsXP Professional SQL Server 2005 いつもお世話になっております。 次のようなことをやりたいのですが、上手くできず困っています。 どなたかご教示くださると助かります。 ○やりたいこと  テーブルの項目数が1~200個あり、項目名が「ユーザ数001」「アクセス回数001」~ 「ユーザ数100」「アクセス回数100」の順に並んでいる。 そこで、変数を使って「ユーザ数001」~「ユーザ数100」と 「アクセス回数001」~「アクセス回数100」にSELECTして得られた 結果をINSERTしたい。 テーブルの列名(項目名)は以下のようにして取得することはできました。 SELECT dbo.syscolumns.name FROM dbo.syscolumns INNER JOIN dbo.sysobjects ON (dbo.sysobjects.id = dbo.syscolumns.id) WHERE dbo.sysobjects.name = 'テーブル名' AND (dbo.syscolumns.name LIKE '%ユーザ数%' + @cnt OR dbo.syscolumns.name LIKE '%アクセス回数%' + @cnt) @cntは変数で1~100までカウントアップして列名を取得しています。 ○困っていること ・上記のSELECTで得られた結果を別の変数「@User」「@Access」にセットしたいが上手くできない。 ・さらに「@User」「@Access」を使って、INSERTを行いたい。 (具体的には以下のようにしたい) INSERT INTO dbo.[テーブル名](@User,@Access) SELECT TOP 100 UCNT, ACNT FROM ( SELECT・・・ (このINSERT文は前後にWHILE文で1~100まで処理を回して、変数「@cnt」がカウントアップするようにしています) 以上、下手な説明でわかりにくいかもしれませんが、宜しくお願い致します。

  • SQL 複数のテーブルから重複なしでデータを取得

    同じフィールド名[名前]を持つテーブルが複数個あります。 仮にテーブル名を、A、B、C、Dの4個だとします。 それらのテーブルから、フィールド名[名前]のデータを重複なしで取得したいのですが、SQL文が思いつきません。 取得するフィールドは[名前]だけです。 select distinct(名前) from A union select distinct(名前) from B union select distinct(名前) from C union select distinct(名前) from D だと、各表に同じ名前が存在する場合は結果も重複してしまい、期待する結果が得られませんでした。 環境はOracle 9iです。 SQL文を教えてください。よろしくお願いします。

  • テーブルを作ろうとしたら。

    下記のようなエラー文が表示されます。 NOTICE: CREATE TABLE will create implicit sequence 'テーブル名とフィールド名をくっつけたような名前' fo r SERIAL column 'テーブル名.フィールド名' NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index 'テーブル名_pke y' for table 'テーブル名' このデーターベースには他にもテーブルがありますが、 名前が主キーで名前が同じものがあるからエラーがでると思い、名前を変更して実行しましたが、同じような エラーがでました。 テーブル名とフィールド名をくっつけたような名前はもともとなかったものなのですが、実行後にデータベースに作成されました。 どなたかわかる方がいたら、ご教授お願いいたします。

  • MySQLテーブルの結合

    MySQLテーブルの結合 select フィール名(field1,field2,field3)from xテーブル名 [inner/left/right] join yテーブル名 on 結合条件 解説書には説明されています 現在自分のデータベースは ahogedb(テーブル名) no hoge1 hoge2 bhogedb(テーブル名) no ahogeno(ahogedbのnoを登録) hoge3 ahogedbを表示してbhogedbでの訪問回数を表示させたいのです bhogedbのahogenoにはahogedbのnoが逐次登録されています 表示はno,hoge1,hoge2に追加したahogenoのカウント数 select文の式の書き方を出来れば1列にして教えてください ahogenoは別名の変数処理するのでしょうか

    • ベストアンサー
    • MySQL
  • ストアド内でカラム名一覧を取得

    =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ストアド内でカラム名一覧を取得、カンマで繋げてひとつの変数にまとめたい。 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 現在開発でストアドを使用する機会があり、そこで不明点が発生し悩んでおります。 以下、現状と質問です。 ■SQL SERVER 2000 ■テーブル(※)のカラム名一覧を取得し、  カラム名をカンマで繋げてひとつの変数に格納したいと思っています。  ※先の処理でカラムを取得したいテーブルをSELECTしており、  対象のテーブル名を変数に代入しています。  カラム一覧を取得するにあたり、以下のようにカーソルで習得し、  FETCHでカラム名を変数に格納しようと考えていましたが、  「'対象テーブル名'」には変数がいれられないので、どうしようかと悩んでいます。  DECLARE CURS_test CURSOR FOR   SELECT name FROM dbo.syscolumns   WHERE id IN   (SELECT id FROM dbo.sysobjects WHERE name = '対象テーブル名')   ORDER BY id, colid;  「sp_executesql」を使用してselect文を流そうとしたのですが、  複数ある列名を取得して、上記で記載しましたように  カラム名をカンマで繋げてひとつの変数に格納する方法がわかりませんでした。  こういった場合、どのように考えて、どのように書けばよいのでしょうか。  まだ触り始めたばかりで、わからないことがわかっていない部分もあり、  質問内容でわかりにくい部分がありましたらご指摘いただければと思います。  どうぞよろしくお願いいたします。

  • SQL 同じテーブル構造の複数のテーブルから重複なしでデータを取得

    テーブル名が違うだけで同じテーブル構造のテーブルが複数個あります。 仮にテーブル名を、A、B、C、Dの4個だとします。 テーブル名を格納するテーブルがあるので、そこから取得する方法でも構いません。 それらのテーブルから、フィールド名[名前]のデータを重複なしで取得したいのですが、SQL文が思いつきません。 取得するフィールドは[名前]だけです。 私の使用している環境はPostgreSQL8.1.9です。 SQL文を教えてください。よろしくお願いします。

  • select文でGROUP BYの正しい使い方

    下記のselect文は問題ないでしょうか?テーブルには5つのフィールド(id,name,age,gender,office)が存在します。 select * from テーブル名 where age >= '40' GROUP BY gender 実際に試したところ、うまく動いているのですが、GROUP BY句で指定されたフィールド名はSELECT句のフィールド指定をすべて含んでいなくてはならないと書かれているのを見つけました。 上記のselect文は正しいのでしょうか。

    • ベストアンサー
    • PHP