2013-01-08 100 views
2

我正在重構幾年前由其他人編寫的Java程序,無法與他們聯繫以查找有關SQL /數據庫的任何內容,但是此查詢不是工作(當分別具有兩個查詢時不返回任何結果)。我知道沒有更多的信息會煩惱,但目前我沒有太多選擇。SQL Inner Join查詢返回沒有結果

"SELECT " + CLMHDR + ".POLBRC, " 
+ CLMHDR + ".POLTYC, " + CLMHDR + ".POLNOC," + CLMHDR + ".CLTKYC, " 
+ POLHDR + ".INCPTP FROM "+ CLMHDR + 
"INNER JOIN " + POLHDR + " ON " + CLMHDR + ".CLTKYC = " + POLHDR+ ".CLTKYP" 
+ " WHERE POLNOC = "+ polnocSearch 
+ " AND POLBRC = '" + polbrcSearch + "'" 
+ " AND POLTYC = '" + poltycSearch + "'" 
+ " AND DATRPC <= " + claimDate 
+ " GROUP BY POLBRC, POLTYC, POLNOC, CLTKYC" 

的表CMLHDR和POLHDR確實包含它引用的列,CLTKYC和CLTKYP在每個表的鍵。對於這些可怕的名字感到抱歉,我們也被RPG卡住了。

編輯: 什麼工作是這樣的:

"SELECT POLBRC, POLTYC, POLNOC, CLTKYC FROM "+ CLMHDR 
+ " WHERE POLNOC = "+ polnocSearch 
+ " AND POLBRC = '" + polbrcSeach + "'" 
+ " AND POLTYC = '" + poltycSearch + "'" 
+ " AND DATRPC <= " + claimDate 
+ " GROUP BY POLBRC, POLTYC, POLNOC, CLTKYC" 

其次是這樣的:

"SELECT INCPTP, TRMTHP FROM "+ POLHDR + " WHERE POLNOP = "+ polnocSearch 
+ " AND POLBRP = '"+ polbrcSearch+ "' AND POLTYP = '"+ poltycSearch + "'" 

,但我真的很喜歡所有的數據在一次被退回。

+3

此代碼看起來很適合[SQL注入](http://en.wikipedia.org/wiki/SQL_injection)。 – Oded

+3

首先打印實際的sql語句並查看是否有錯誤 – Madhivanan

+0

在縮小WHERE子句的同時嘗試聲明。它可能確實沒有結果。如果它不拋出錯誤,則不會有結果。如果它確實拋出,謹慎分享? – Jacco

回答

2

除了inner join問題,你有一個問題group by。它應該有INCPTP。在除MySQL以外的任何數據庫中,這會產生一個錯誤。

順便說一句,它會更容易回答你的問題,如果它包括兩個方面:

  1. 您使用
  2. 得到的查詢字符串填充
值數據庫引擎
+0

啊,補充說,工作。謝謝,我沒有意識到小組必須包括所有選定的列。 – Carasel

3

還有就是FROM和INNER JOIN子句之間缺少一個空格:

FROM "+ CLMHDR + 
"INNER JOIN 

它應該是這樣的:

FROM "+ CLMHDR + 
" INNER JOIN 
+0

謝謝,這將是一個問題修復,但不幸的是它仍然無法正常工作。 – Carasel