SQL内部联接查询不返回任何结果

时间:2013-01-08 10:16:40

标签: sql inner-join

我正在重构几年前由别人编写的Java程序,无法与他们联系以查找有关SQL /数据库的任何信息,但此查询无法正常工作(当不查看任何结果时分别有两个查询)。我知道在没有更多信息的情况下提问是很烦人的,但我现在还没有太多选择。

"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 + "'"

但我真的更喜欢一次返回所有数据。

2 个答案:

答案 0 :(得分:3)

FROM和INNER JOIN子句之间缺少空格:

FROM "+ CLMHDR +
"INNER JOIN

应该是这样的:

FROM "+ CLMHDR + 
" INNER JOIN

答案 1 :(得分:2)

inner join问题外,group by存在问题。它应该有INCPTP。在除MySQL之外的任何数据库中,都会产生错误。

顺便说一句,如果它包含两件事情,那么回答你的问题会更容易:

  1. 您正在使用的数据库引擎
  2. 生成的查询字符串,其值填入