我理解如何在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语法中有一个错误,最后一行是这样的我想我不知道如何在另一个中使用一个查询。
答案 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
列重复 - 可能是问题。