0

たとえば、以下の表を見てください。

tblItems:

ItemName   IDData    Type
-------------------------
 i1         1         1
 i2         2         1
 i3         1         2

tblData1:

IDData     Name
-------------------
 1          Data11
 2          Data12

tblData2:

IDData     Name
-----------------
 1          Data21
 2          Data22

tblItemsタイプ 1 の列にはfromIDDatatblData1あり、タイプが 2 の場合はIDDatatblIDData2 に関連付けられています。

レコードはデータテーブルに挿入する必要があり、ユーザーはアイテムテーブルにレコードを挿入できるため、それを確実にするために関係を設定する必要があります。

この場合、これらのテーブル間のリレーションシップを設定する方法はSql Server?

4

3 に答える 3

0

このようなものがあなたのニーズに合うと思います:

SELECT 
 item.ItemName
 ,CASE item.Type
   WHEN 1 THEN data1.Name
   WHEN 2 THEN data2.Name
   ...add more?
  END
FROM tblItems item
JOIN tblData1 data1 ON data1.IDData=item.IDData AND item.Type=1
JOIN tblData2 data2 ON data2.IDData=item.IDData AND item.Type=2
于 2014-01-21T12:46:52.807 に答える
0

私はあなたの構造を次のように修正します

tblItems:

ItemName   IDData    Type
-------------------------
 i1         1         1
 i2         2         1
 i3         1         2

tblData

IDData     Name           Type
--------------------------------
 1          Data11         1
 2          Data12         1
 1          Data11         2
 2          Data12         2

今あなたのテーブルtblItems IDDataにあり、Type外部キーになります。新規tblDataでは、含める複合主キーを作成する必要があり、IDDataテーブルTypeを結合するときに奇妙なロジックを使用する必要がなくなりました。

于 2014-01-21T12:52:26.653 に答える