2016-04-02 10 views
-1

In unserer Abfrage haben wir 2 Tabellen, denen wir beitreten möchten. Aber wir erhalten den folgenden Fehler:Kann 2 Tabellen nicht beitreten

org.postgresql.util.PSQLException: ERROR: missing FROM-clause entry 
for table "component" Position: 48 at 
org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2270) 
    at 
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1998) 
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255) 
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:570) 
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:406) 
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:286) at datab.Datab.testDB(Datab.java:73) at datab.Datab.main(Datab.java:60) 

Hier ist mein Code:

public static void testDB(Connection con){ 
    //RUN AN EXAMPLE QUERY 
    try { 
    if (!con.isClosed()) 
    { 
     Statement st = con.createStatement(); 
     String query = "SELECT * FROM \"Component\" inner join \"Kind\" on Component.Kind_ID = Kind.ID"; 
     ResultSet rs = st.executeQuery(query);     

     while (rs.next()) 
     {     
     System.out.println(rs.getString(1) + " " + rs.getString(2) + " " + rs.getString(3));        
     } 
    }      
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
} 
+4

ein weiteres gutes Beispiel, warum Bezeichner in Anführungszeichen keine gute Idee sind. –

Antwort

7

Dies ist der SQL-Anweisung:

SELECT * 
FROM "Component" 
    inner join "Kind" on Component.Kind_ID = Kind.ID 

Der Tabellenname "Component" ist eine andere Tabellenname als component . Sobald Sie anfangen, diese gefürchteten zitierten Identifikatoren zu verwenden, müssen Sie sie verwenden überall. Sie zeigten uns nicht Ihre Tabellendefinitionen, aber ich vermute, Sie müssen auch die Spaltennamen zitieren:

SELECT * 
FROM "Component" 
    inner join "Kind" on "Component"."Kind_ID" = "Kind"."ID" 

Wenn Sie dies ändern können, empfehle ich die Tabellen neu erstellen ohne doppelten Anführungszeichen .

Mehr Details über Bezeichner in Anführungszeichen sind im Handbuch:
http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS

+0

Sollte nicht eine dieser "Komponenten" ohne Anführungszeichen sein? –

+0

@MarkRotteveel: nicht gemäß der Fehlermeldung. –

+0

Hallo Markus, Netbeans möchte, dass wir Tabellennamen wie diesen \ tablename \ – ssjmessi10

Verwandte Themen