2010-12-10 11 views
0

以下のテーブル構造を使用して、私は検索名としてロケーション名を使用して、承認されたテーブルにラインIDを挿入する必要があります。これをどうやってやるの?3つのテーブルを結合してSQLを更新してください

私は以下のコードを使い始めましたが、あまり効果がありません。 SQLのジョインにはそれほど素晴らしいものではないので、どんな助けでも大歓迎です。

UPDATE dbo.Approved 
SET dbo.Approved.Groupid=dbo.Lines.ID 
FROM dbo.Lines,dbo.Approved, dbo.Locations 
WHERE dbo.Approved.Location = dbo.Locations.Location_Name 

承認

ID (PK) | Incident    | Location  | GroupID 
-------------------------------------------------------- 
1  | Theft of luggage  |Oxford Circus | Null 
2  | Theft of bag   |Kings Cross | Null 

ID (PK) | Line_Name  | 
-------------------------- 
1  | Central  | 
2  | Northern  | 
3  | Circle   | 

場所は

ID (PK) | Location_Name | LineID 
--------------------------------- 
1  | Oxford Circus |1 
2  | Kings Cross |2 
3  | Victoria  |3 
+0

質問:Where_Committedフィールドとは何ですか? – Spredzy

+0

これはありませんでした。それを見つけていただきありがとうございます。 – MrBliz

+0

クエリを変更しましたか? – Spredzy

答えて

2

これは、私はあなたを示唆しているものです:

UPDATE t1.Approved 
SET t1.Groupid = t2.ID 
FROM dbo.Approved t1 
INNER JOIN dbo.Locations t2 ON t1.Location = t2.Location_Name 

最後に挿入するものはLine_NameではないLineIDだけなので、Linesテーブルは必要ありません。

希望すると、

+0

乾杯、ありがとうございました – MrBliz

+0

あなたはウェルカムです;)1つのテーブルにLocationを、もう1つにLocation_Nameが必要ない場合は、データの冗長性だけです。これがデータウェアハウスでない場合は、もっと標準化する;) – Spredzy

関連する問題