我正在尝试使用子查询访问表中的数据。 表1包含表2的外键,这意味着我可以使用该密钥访问表2中的数据。 我的问题是在从下面显示的方法返回数组列表后,arraylist为null。
这就是我所做的:
LogEntry logBookDates;
List<LogEntry> bookList =new ArrayList();
try{
PreparedStatement getSummaryStmt=con.prepareStatement("SELECT * FROM LOGENTRYTABLE WHERE DIARYCODE =(SELECT Diarycode FROM LOGBOOKTABLE WHERE STUDENTUSERNAME=? OR SUPERVISORUSERNAME=? AND PROJECT_APPROVE_STATUS=?)");
//the above statment is the sub query which i have created, i get the diary code from log book table and then access the log entry table.
getSummaryStmt.setString(1,userName);
getSummaryStmt.setString(2,userName);
getSummaryStmt.setString(3,"Accepted");
ResultSet rs=getSummaryStmt.executeQuery();
while(rs.next())
{
logBookDates=new LogEntry(rs.getString("STUDENTUSERNAME"),rs.getString("SupervisorUsername"),rs.getString("projecttitle"),rs.getString("projectDescription"),rs.getDate("startDate"),rs.getDate("enddate"),rs.getString("project_approve_status"),rs.getString("diarycode"),rs.getString("projectcode"),rs.getInt("Index"),rs.getString("log_Entry"),rs.getDate("logentry_date"),rs.getString("supervisor_comment"),rs.getString("project_progress"));
bookList.add(logBookDates);
}
}catch(Exception e){}
return bookList;
}
之前我没有使用过子查询,这是我第一次使用它们。 这里似乎有什么问题?
感谢您的时间。
编辑:日志表的示例数据
logentry表的示例数据
预期产出:
我没有屏幕截图,但我需要的只是遍历将从上述方法返回的arraylist。
答案 0 :(得分:2)
问题是,LOGENTRYTABLE
表格中不包含STUDENTUSERNAME, SupervisorUsername, projecttitle, projectDescription, startDate,
等列...
rs.getString("STUDENTUSERNAME"), rs.getString("SupervisorUsername"), etc...
可能,您需要加入查询
"SELECT * FROM LOGENTRYTABLE LT
INNER JOIN LOGBOOKTABLE LB ON LT.DIARYCODE=LB.DIARYCODE
WHERE LT.DIARYCODE =
(SELECT DIARYCODE FROM LOGBOOKTABLE
WHERE (STUDENTUSERNAME=? OR SUPERVISORUSERNAME=?)
AND PROJECT_APPROVE_STATUS=?)"