2016-10-08 4 views
0

У меня есть три таблицы:Изменение таблицы данных

Таблица 1: (Consumer)

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

Таблица 2: (ConsumerLocation)

UserName | LocationID 
'Magika12' 13234 

Таблица 3: (Location)

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

И я хотел бы изменить addres s из Magika12 этого вместо:

"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 CL.UserName = 'Magika12' AND CL.LocationID = 13234 
+1

Почему вы используете второе соединение? – Evgeny

+0

К сожалению, я прочитал информацию о таблицах, поскольку имя пользователя было только в таблице Consumer. Я исправляю свой ответ. Спасибо. – Dez

+0

Спасибо за ответ. Я получил эту ошибку: 'Код ошибки: 1054. Неизвестный столбец 'CL.LocationId' in 'on clause'' – RoadRunner

1

Ваш присоединиться нуждается в ON состоянии ... попробовать это.

INNER JOIN ConsumerLocation ON Location.LocationId = ConsumerLocation.LocationId 

Когда вы JOIN без ON условия вы получите все возможные комбинации строк в таблицах вы присоединитесь. Это может быть много строк.

+0

Спасибо за ответ. Помог мне понять мою ошибку. Мне нужно перестать думать о sql, как о других языках программирования ahahaha – 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. Неизвестный столбец« c.LocationId »в« on clause » – RoadRunner

+0

Затем проверьте свою таблицу« CustomerLocation »и исправьте имя поля. – Evgeny

+0

Спасибо @Evgeny, отличный ответ. – RoadRunner

Смежные вопросы