2013-08-23 27 views
1

我有以下4個MySQL表如何更新基於其他3個表

Region 
RegionId 

City 
CityId 
RegionId 

Hotel 
HotelId 
CityId 

HotelRegion 
HotelId 
RegionId 

我掙扎寫一個UPDATE語句從HotelRegion表中的數據更新City表的RegionId領域的MySQL表。

基本上我怎樣才能更新城市表與正確的RegionId,其中HotelRegion表中的HotelId與城市表的CityId相匹配。

這是目前

UPDATE City c 
SET c.RegionId = 
(SELECT DISTINCT(HotelRegion.RegionId) FROM HotelRegion 
INNER JOIN Hotel ON Hotel.HotelID = HotelRegion.HotelID 
INNER JOIN City ON City.CityId = Hotel.CityId 
WHERE City.CityId = 1233) 
WHERE c.CityId = 1233 

該錯誤消息我得到的是你不能指定目標表「C」的更新在FROM子句我的UPDATE語句。 請讓我知道如果你需要更多的信息來幫助回答我的問題

+0

基於我的問題希望得到一些指點而不是一個模糊的迴應。 – Tommassiov

+0

你的表結構讓我感到困惑。如果酒店表通過城市ID鏈接到城市表格並且城市ID表格與該地區有鏈接,那麼爲什麼HOTELREGION表格存在?這是否與HOTEL表中的信息重複? – Kassabba

+0

因爲此時RegionId爲NULL。因此,我需要從HotelRegion獲取數據,例如我知道哪個地區和城市有酒店。但系統不知道某個城市所在的地區。 – Tommassiov

回答

0

必須經過測試,我設法得到以下更新查詢出來才能正常工作

UPDATE City 
INNER JOIN Hotel ON City.CityId = Hotel.CityId 
INNER JOIN HotelRegion ON Hotel.HotelId = HotelRegion.HotelId 
SET City.RegionId = HotelRegion.RegionId 
WHERE City.CityId = 1223 
AND Hotel.CityId = 1223