在JDBC编程中使用另一个查询

时间:2010-12-01 23:30:26

标签: java sql jdbc subquery

我理解如何在SQL上用纸做这个,但是在Java中实现它时遇到了麻烦(这是我第一次实际编写JDBC的东西)

例如,假设我的数据库包含:

电影(代码,标题,出版商)

客户( custno ,姓名)

借用( custno 代码

我想找一个由出版商ABC借用每部电影的客户的名字

string no_of_ABC_movies = "SELECT COUNT(publisher), publisher FROM movie, WHERE movie.publisher = 'ABC'";

string no_of_cust_ABC_movies = "SELECT COUNT(name), name FROM customer, borrowed, movie, WHERE customer.custno = borrowed.custno AND borrowed.code = movie.code AND movie.publisher = 'ABC'";


String query = "SELECT name" +
                        " name FROM customer, borrowed, movie" +
                        " WHERE customer.custno = borrowed.custno AND" +
                        " borrowed.code = movie.code AND" +
                        " movie.publisher = 'ABC' AND" + " "
                         no_of_cust_ABC_movies + " = " + no_of_ABC_movies;

这不是我正在使用的确切数据库,但是查询将起作用并打印出从ABC中借用电影而没有最后一行的人的姓名,但是说我的SQL语法中有一个错误,最后一行是这样的我想我不知道如何在另一个中使用一个查询。

4 个答案:

答案 0 :(得分:3)

这取决于您的DBMS,但我看到的每个SQL变体都要求子查询周围的parens。

尝试类似:

...

" movie.publisher = 'ABC' AND ("
no_of_cust_ABC_movies + ") = (" + no_of_ABC_movies + ")";

答案 1 :(得分:1)

答案 2 :(得分:1)

我喜欢在查询浏览器或工作台中查询我的查询,然后将它们复制到Java。它一次保持一件新事物......

答案 3 :(得分:0)

您的查询实际上是以

开头的
 SELECT name name FROM customer ...

name列重复 - 可能是问题。