java - 使用子查询

标签 java database subquery derby

我正在尝试使用子查询访问表中的数据。 表 1 包含表 2 的外键,这意味着我可以使用该键访问表 2 中的数据。 我的问题是在我从下面显示的方法返回数组列表后,数组列表为空。

这是我所做的:

     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;
 }

我以前没有使用过子查询,这是我第一次使用它们。 这似乎是什么问题?

感谢您的宝贵时间。

编辑:日志表的示例数据 enter image description here

logentry表示例数据 enter image description here

预期输出:

我没有屏幕截图,但我需要的只是遍历将从上述方法返回的数组列表。

最佳答案

这就是问题所在,LOGENTRYTABLE 表不包含包含 STUDENTUSERNAME、SupervisorUsername、projecttitle、projectDescription、startDate、 等的列...

 rs.getString("STUDENTUSERNAME"), rs.getString("SupervisorUsername"), etc...

可能,您需要 JOIN 查询

"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=?)"

关于java - 使用子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21083856/

相关文章:

java - 如何添加重置按钮以清除 Edittext 字段上的数字

sql-server - 如何确定 ms sql server 2005 中的打开/事件连接总数

mysql - 设置外键的默认值?

mysql - #2014 - 命令不同步;你现在不能运行这个命令 SQL 子查询

java - 如何删除 GridBagLayout 的行

java - 如何将自定义通知类型添加到jira

sql - 如何根据条件从另一个表更新表中的列?

mysql - 从子查询中获取总行数?

java - 使用 maven-shade-plugin 时的多余警告

sql-server - 数据库中的所有表都应该相关还是可以保留其中的一些表?