0

私はJavaでMySQLを使用しています。

テーブル「regApartmentsTable」、「gardApartmentsTable」、「penthousesTable」のいずれかで「owners」フィールドを更新しようとしています。これは空で、特定の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つのテーブルを含めます。(所有者がなく、apartmentNumとstreetに一致する必要なアパートは、誰かを助ける場合、複数のテーブルに含めることはできません)。

しかし、このコードを実行しようとすると、「フィールドの列'所有者'があいまいです」というエラーが発生します。SQLコマンドを他にどのように書くべきか考えていますか?よろしくお願いします!

編集:問題に対する十分な回答が得られませんでした...わかりました。これらの3つのテーブルでは、「owners」フィールドが一般的であるため、例外が発生することを理解しました。それでも、どうすれば問題を解決できますか?どのテーブルで必要なアパートを見つけるかわからないため、テーブルの名前にプレフィックスを追加できません...知っていれば、3つのテーブルを検索していなかったでしょう。

4

1 に答える 1

1

MySQL での複数テーブルの UPDATE は、 などを使用した単なるテーブル結合の形式ですregApartmentsTable.owners

結合は更新の目的ではないため、ここではテーブルごとに個別の UPDATE が必要です。またはベーステーブルを作成します。

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

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

stp = connection.prepareStatement("UPDATE penthousesTable SET owners=? " +
                "WHERE owners=? AND apartmentNum=? AND street=?");
stp.setString(1, newOwners);
stp.setString(2, "");
stp.setInt(3, apartmentNum);
stp.setString(4, streetName+" "+buildingNum);
于 2013-03-17T23:18:22.817 に答える