2016-10-08 4 views
0

私は3つのテーブルがあります。変更表情報

表1:(消費者)を

UserName | FirstName | LastName 
'Magika12' 'Ronald' 'Ludwig' 

表2:(ConsumerLocation)

UserName | LocationID 
'Magika12' 13234 

表3:(場所)

LocationID | StreetNumber | StreetName | Suburb | City | Postalcode 
13234  13    Baker Street Melton Brisbane 4242 

そして、私はアドレスを変更したいと思いますこの代わりにMagika12のS:

"124 Braelands Crescent, Albion, Melbourne, 9999" 

新しいテーブルは次のようになりこれにより:私はこのような何かを試してみました

LocationID | StreetNumber | StreetName |  Suburb | City | Postal code 
13234  124   Braelands Crescent Albion Melbourne 9999 

UPDATE 
    L1 
SET 
    L1.StreetNumber = 124, 
    L1.StreetName = 'Braelands Crescent', 
    L1.Suburb = 'Albion' , 
    L1.City = 'Melbourne', 
    L1.Postalcode = 9999 
FROM Location L1 
INNER JOIN ConsumerLocation 
WHERE ConsumerLocation.UserName = 'Magika' 

を、私は、これは正しくありません知っています、しかし、私はMagika12のアドレスを更新するためにすべてのテーブルをどのように接続するのかはわかりません。私はUserNameの主キーをConsumerとし、主外来キーはConsumerLocationとしました。 LocationIdプライマリキーはLocation、プライマリ外部キーはConsumer Locationです。

すべてのヘルプは

答えて

1
UPDATE 
    Location L1 
    JOIN ConsumerLocation CL ON CL.LocationID = L1.LocationID 
SET 
    L1.StreetNumber = 124, 
    L1.StreetName = 'Braelands Crescent', 
    L1.Suburb = 'Albion' , 
    L1.City = 'Melbourne', 
    L1.Postalcode = 9999 
WHERE CL.UserName = 'Magika12'; 

あなたは、同じユーザー名に関連する複数の場所のエントリを持つ句LocationId WHEREに追加します。

WHERE CL.UserName = 'Magika12' AND CL.LocationID = 13234 
+1

なぜ2番目の結合を使用しますか? – Evgeny

+0

ユーザー名がコンシューマテーブルにしかないので、テーブル情報を読みました。私は自分の答えを正す。ありがとうございました。 – Dez

+0

答えをありがとう。私はこのエラーを受け取りました: 'Error Code:1054. 'on clause'の 'CL.LocationId'の不明な列 – RoadRunner

1

あなたの参加ニーズON条件...これを試してみてくださいをいただければ幸いです。

INNER JOIN ConsumerLocation ON Location.LocationId = ConsumerLocation.LocationId 

ときJOINあなたが参加したテーブルの行のすべての可能な組み合わせを取得する任意のON条件なし。それはたくさんの行かもしれません。場合

+0

回答ありがとうございます。私の間違いを理解するのを助けました。私は他のプログラミング言語のようなSQLの考えを停止する必要があります。 – RoadRunner

2

あなたはjoin文の条件を逃しました。このようにする必要があります:

UPDATE 
    Location L1 
    INNER JOIN ConsumerLocation c on c.LocationID=L1.LocationID -- miseed on 
SET 
    L1.StreetNumber = 124, 
    L1.StreetName = 'Braelands Crescent', 
    L1.Suburb = 'Albion' , 
    L1.City = 'Melbourne', 
    L1.Postalcode = 9999 
WHERE c.UserName = 'Magika' 
+0

答えをありがとう。このエラーコード:1054のようなエラーが発生しました。 'on clause'の 'c.LocationId'の不明な列 – RoadRunner

+0

'ConsumerLocation'テーブルを確認し、フィールド名を修正してください。 – Evgeny

+0

ありがとう@Evgeny、素晴らしい答え。 – RoadRunner

関連する問題