ORA-00918:SQL开发模糊地定义了SQL,SQL Developer的工作原理

时间:2017-05-08 19:44:58

标签: java sql oracle

我在Oracle SQL Developer中创建了一个select

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

当我在SQL Developer中运行它时效果非常好: enter image description here

但是当我把它放到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);

1 个答案:

答案 0 :(得分:0)

根据您发布的代码我最好的猜测,您似乎已经定义了

SZPITAL_DB.PACJENT, 
SZPITAL_DB.LEKARZ, 
SZPITAL_DB.PRZYJECIE_NA_ODDZIAL 
FROM语句中的

,但您似乎使用例如{。{}}的表名来引用它,而没有数据库名称。 SELECT语句中的PRZYJECIE_NA_ODDZIAL。这同样适用于SZPITAL_DB.PACJENTID

正如@DanK所提到的,也许你的表名中有拼写错误?