2

調査のあるテーブルとウィジェットのあるテーブルがあります。これら 2 つのテーブルの間に、2 つを接続する 3 番目のテーブルが必要です。以下はまさに私が探しているものです。

Survey:

survey_id   numeric(18, 0)  Unchecked Primary Key
dashboard_id    numeric(18, 0)  Unchecked Foreign Key
survey_title    nvarchar(250)   Unchecked

Widget:

widget_id   numeric(18, 0)  Unchecked Primary Key
dashboard_id    numeric(18, 0)  Checked Foreign Key

2 つのテーブルには共通の dashboard_id (ダッシュボード テーブルの主キー) があります。

質問:

一致する dashboard_id に基づいてこれら 2 つのテーブルを結合し、この新しいテーブルを 3 番目のテーブルに挿入するにはどうすればよいですか。上記のテーブルの 2 つの主キーを、次のような新しい 3 番目のテーブルに入れるにはどうすればよいですか。

Survey_link_widget:

survey_link_widget_id   numeric(18, 0)  Unchecked
survey_id   numeric(18, 0)  Unchecked
widget_id   numeric(18, 0)  Unchecked
data_series_name    nvarchar(250)   Unchecked
data_series_displaytitle    nvarchar(250)   Checked

survey_link_widget_id は自動インクリメントされ、それ自体が作成されます。survey_id と widget_id は、dashboard_id に基づいて結合する予定の 2 つのテーブルから取得する必要があります

また、探している挿入/結合クエリに 4 番目と 5 番目の列 (data_series_name と data_series_displaytitle) を追加するのは難しいでしょうか?

この「リンク テーブル」の扱いが完全に間違っていると思われる場合は、教えてください。現在、私の SQL は本当にさびているので、ばかげたことをしているだけかもしれません。

4

1 に答える 1

2

さまざまな可能性がありますが、一般的な考え方は次のとおりです。

INSERT INTO Survey_link_widget (survey_id, widget_id)
SELECT
    survey_id,
    widget_id
FROM
    Survey INNER JOIN Widget ON Survey.dashboard_id = Widget.dashboard_id

それを超えて、あなたはとを追加することについて尋ねます、data_series_nameそしてdata_series_displaytitle確かにあなたはそれをすることができます(最初の行のコンマ区切りリストにそれらを追加するだけです)、しかしあなたがそうするなら、あなたはそれらのフィールドにいくつかのデータを入れなければなりません(すなわち、3番目と4番目の項目をSELECT句に追加します)-これはフィールドにすることも、静的にすることもできます(引用符で囲みます)。

于 2013-03-20T16:31:37.160 に答える