繁体   English   中英

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

[英]Using one query in another in JDBC programming

我了解如何在纸上使用SQL进行此操作,但是在用Java实现该功能时遇到了麻烦(这是我第一次真正编程JDBC东西)

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

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

客户(custno,名)

借用( custnocode

我想找到借出版商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语法有误,所以我想我不知道如何在另一个查询中使用一个查询。

这取决于您的DBMS,但是我见过的每个SQL变体都需要对子查询进行绕行。

尝试类似:

...

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

您有双名字段的问题,但查询中没有逗号分隔。

如果您的代码与上面的代码完全相同,则在最后一个缺少行的+上方连接字符串时,您会遇到编译错误。

如果是这样,我的建议是错字。

  1. 删除重复的选择(仅使用一个名称)或
  2. 用逗号分隔名称(虽然我看不到两次选择名称的意思)

而且您的最后一行是错误的..您不能以这种方式比较两个选择查询。.仅添加所需的where子句。

(您应该先阅读数据库联接,然后再解决问题)

我想让查询在查询浏览器或工作台中正常工作,然后将其复制到Java中。 一次可以将它保持在一件新事物上...

您要查询的实际上是从

 SELECT name name FROM customer ...

name列重复-可能是问题所在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM