2010-12-01 51 views
0

我知道如何在SQL這樣做在紙上,但我有實現這個Java中的麻煩(這是我第一次真正的編程JDBC的東西)在另一個JDBC使用一個查詢編程

例如,說我的數據庫包括:

電影(代碼,書名,出版社)

客戶(custno,名)

借(custno代碼

而且我想找個誰通過pubisher借來的每一部電影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

我認爲你有一個剪切和粘貼錯誤。在第二行到最後一行'ABC'後,關閉字符串,但不加號。 – hvgotcodes 2010-12-01 23:34:16

回答

0

你查詢實際上

SELECT name name FROM customer ... 

name列被複制開始 - 也許這個問題。

3

它取決於你的DBMS,但是我見過的每個SQL變體都需要子查詢的parens。

嘗試類似:

... 

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

你有雙名現場問題,而在您的查詢用逗號隔開。

如果您的代碼與上面列出的代碼完全相同,那麼在最後一行 - 缺少+以連接字符串時,會出現編譯錯誤。

如果這是一個錯字是我的建議。

  1. 刪除重複的選擇(僅使用一個名稱)或
  2. 分隔姓名之間用逗號(我沒有看到選擇名稱的點兩次雖然)

而且你的最後一行是錯誤的..你不能比較兩種選擇查詢的方式..只需添加所需的where子句。

(你應該閱讀數據庫第一次加入,然後解決你的問題)

1

我喜歡讓我的查詢,在查詢瀏覽器或工作臺上工作,然後通過將它們複製到Java。它保持在一個新的東西...

相關問題