2014-04-03 63 views
-1

所以我的sql很生锈。为JDBC项目选择多个表格

我有一个项目,我的工作,用Java编写的,用于连接到Oracle数据库的大学,我有6张桌子,产品,数码产品,CD,艺术家,歌曲和song_artist

我想从我的Java程序中同时添加,更新和删除这些表。 所以我去加入他们,我真的不是起诉,如果我想这样做的方式是可能的或是最好的方法,下面是我的一些代码的尝试, 记住,表结构可以不会改变。

public ResultSet getCD() { 
    try { 
     String queryString = "SELECT * FROM PRODUCT p, DIGITAL_PRODUCT dp, CD c, SONG s, ARTIST a, CD_ARTIST ca" 
       + "WHERE p.PROD_ID = dp.PROD_ID AND dp.DIG_ID = c.DIG_ID AND c.CD_ID = ca.CD_ID " 
       + "AND ca.ARTIST_ID = a.ARTIST_ID AND ca.CD_ID = s.CD_ID" 
       + "GROUP BY PROD_ID "; 

     stmt = conn.createStatement(); 
     rset = stmt.executeQuery(queryString); 


    } catch (Exception e) { 
     System.out.println(e); 
    } 
    return rset; 
} 

目前我得到的java.sql.SQLSyntaxErrorException:ORA-00933:SQL命令未正确结束,我猜这可能是与我的组通过做。

任何帮助或建议,真的很感激。

+0

错误是因为如果我没有弄错,你必须'GROUP BY p.PROD_ID'或'dp.PROD_ID'。 –

+0

将其更改为p.PROD_ID,结果仍然相同 – Johntk

+0

您还缺少空格(例如's.CD_ID'后面)。请注意,您使用的连接语法已被视为弃用。你应该真的使用显式连接。 –

回答

1

一个问题与您查询的是,你不能用group by这种方式一起使用select *。如果选中的列未出现在group by子句中,则必须在列表中应用像max这样的聚合函数。利奥当然是对的。

+0

是的,我认为这给了我一些工作,我删除了小组,并没有更多的错误,我不确定我是否需要该小组,所以我现在将更多地使用它,看看我如何继续。感谢您的输入。 – Johntk

3

查询就是缺少“WHERE”前添加一个空格和“本集团”

+0

它可能仍然不起作用。查询有选择“*”和组由只有“PROD_ID” – hellboy

+0

好了,所以我把空间,现在的错误已经改变为:ORA-00979:不是一个GROUP BY表达式 – Johntk

+0

true。因为现在,你需要一些聚合函数来对你的结果进行分组。使用group子句,您希望从查询中得到什么? (所以我们可以帮你) – Leo