我創建了一個選擇Oracle SQL Developer中ORA-00918:列在Java中定義的含糊,SQL開發工作
select PRZYJECIE_NA_ODDZIAL.PRZYJECIEID as Numer_przyjęcia,
PRZYJECIE_NA_ODDZIAL.PACJENTID as ID_pacjęta,
PACJENT.PACJENTIMIE as Imię,
PACJENT.PACJENTNAZWISKO as Nazwisko,
PACJENT.PESEL as PESEL,
PRZYJECIE_NA_ODDZIAL.ROZPOZNANIE AS DIAGNOZA,
PRZYJECIE_NA_ODDZIAL.NAZWAODDZIALU as ODDZIAŁ,
PRZYJECIE_NA_ODDZIAL.DATAPRZ as DATA_PRZYJĘCIA,
LEKARZ.LEKARZIMIE as Imię_lekarza,
LEKARZ.LEKARZNAZWISKO as Nazwisko_lekarza,
PRZYJECIE_NA_ODDZIAL.UWAGI
from SZPITAL_DB.PACJENT, SZPITAL_DB.LEKARZ, SZPITAL_DB.PRZYJECIE_NA_ODDZIAL
where PRZYJECIE_NA_ODDZIAL.PACJENTID = PACJENT.PACJENTID
and PRZYJECIE_NA_ODDZIAL.LEKARZID = LEKARZ.LEKARZID
但是當我把它轉換成Java我得到了一個錯誤:
ORA-00918: column ambiguously defined
Java代碼:
private void Get_Data(){
String sql="select PRZYJECIE_NA_ODDZIAL.PRZYJECIEID as Numer_przyjęcia, PRZYJECIE_NA_ODDZIAL.PACJENTID as ID_pacjęta, PACJENT.PACJENTIMIE as Imię,PACJENT.PACJENTNAZWISKO as Nazwisko,PACJENT.PESEL as PESEL, PRZYJECIE_NA_ODDZIAL.ROZPOZNANIE AS DIAGNOZA,PRZYJECIE_NA_ODDZIAL.NAZWAODDZIALU as ODDZIAŁ,PRZYJECIE_NA_ODDZIAL.DATAPRZ as DATA_PRZYJĘCIA, LEKARZ.LEKARZIMIE as Imię_lekarza, LEKARZ.LEKARZNAZWISKO as Nazwisko_lekarza, PRZYJECIE_NA_ODDZIAL.UWAGI from SZPITAL_DB.PACJENT,SZPITAL_DB.LEKARZ, SZPITAL_DB.PRZYJECIE_NA_ODDZIAL where PRZYJECIE_NA_ODDZIAL.PACJENTID = PACJENT.PACJENTID and PRZYJECIE_NA_ODDZIAL.LEKARZID = LEKARZ.LEKARZID";
try{ pst=con.prepareStatement(sql);
rs= pst.executeQuery();
jTable1.setModel(DbUtils.resultSetToTableModel(rs));
}catch(Exception e){
JOptionPane.showMessageDialog(null, e);
編輯是有用的,但現在更難以檢查2個請求是否相同,所以我會把它放在這裏:**我證實,他們在**之前完全一樣,這不是一個小錯字。現在使用編輯後的格式,我們可以看到每個引用都有前綴,所以不應該有歧義... –
由於您已經在每個列引用中明確定義了表,因此您不應該收到此錯誤。因此,這告訴我你在某個地方有一個拼寫錯誤,或者你在使用的Java庫中發現了一個錯誤。我會建議嘗試攔截最終傳遞給數據庫的調用。您可能實際上並沒有通過Java發送相同的腳本,而是通過SQL Developer發送。 – DanK
使您的sql語句儘可能小,我們需要/不需要完整的語句來分析您的問題!並以便於閱讀/比較/分析的方式進行格式化。 – miracle173