我在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個表格中搜索一下,然後更新包含適當公寓的那個?
不,不搜索,然後更新。只需使用三條UPDATE語句,每個語句一個表。 – 2013-03-18 08:35:51
認爲有一個更簡單的方法來做到這一點,在一條線... – Jjang 2013-03-18 08:35:56
這是一個案例窮人歸一化。如果任何類別的住宿可以有一個以上的所有者,那麼應該有一個通過id鏈接到表的屬主表,並且屬性應該全部在由指示什麼類型的他們是住宿。 @MarkoTopolnik是正確的,但需要多個更新 – Petesh 2013-03-18 08:43:06