2013-03-18 21 views
-1

我在Java中使用MySQL。字段中的「所有者」不明確

我試圖更新其中一個表'regApartmentsTable','gardApartmentsTable','penthousesTable'中的'owner'字段,該字段爲空,並且對應於特定的apartmentNum和street,並將其替換爲字符串'newOwners'。

爲了做到這一點,我寫了下面的代碼:

st=connection.prepareStatement("UPDATE regApartmentsTable,gardApartmentsTable,penthousesTable SET owners=? " + 
       "WHERE owners=? AND apartmentNum=? AND street=?"); 
st.setString(1, newOwners); 
st.setString(2, ""); 
st.setInt(3, apartmentNum); 
st.setString(4, streetName+" "+buildingNum); 

我包括3個表,因爲我需要所有的人看。 (所需的公寓沒有所有者,並且與公寓Nu和街道相匹配,如果有幫助的話,不能在一個以上的桌子上)。

但是,當我嘗試運行此代碼時,我得到一個「列」所有者在字段中是不明確的「錯誤。 任何想法我應該怎麼寫SQL命令? 謝謝!

澄清(來自以前的問題): 好吧,我明白,因爲'所有者'字段在這三個表中很常見,所以引發了異常。 但是,我該如何解決這個問題?我不能在表中添加一個前綴名(例如regApartmentsTable.owners),因爲我不知道在哪個表中我會找到所需的公寓......如果我知道,我不會在3個表中搜索。

任何人都可以提出解決方案嗎?我應該先在3個表格中搜索一下,然後更新包含適當公寓的那個?

+0

不,不搜索,然後更新。只需使用三條UPDATE語句,每個語句一個表。 – 2013-03-18 08:35:51

+0

認爲有一個更簡單的方法來做到這一點,在一條線... – Jjang 2013-03-18 08:35:56

+1

這是一個案例窮人歸一化。如果任何類別的住宿可以有一個以上的所有者,那麼應該有一個通過id鏈接到表的屬主表,並且屬性應該全部在由指示什麼類型的他們是住宿。 @MarkoTopolnik是正確的,但需要多個更新 – Petesh 2013-03-18 08:43:06

回答

2

使用查詢一次不能更新3個表格。只有程序纔有可能。

+0

你的意思是'插入'? – Jjang 2013-03-18 08:36:34

+1

沒有存儲過程 – PSR 2013-03-18 08:37:09

+2

在存儲過程中,您仍然有三個語句,所以您只是將權重轉移。 – 2013-03-18 08:37:44

相關問題