Java根据其他表中的记录显示一个表中的记录

Seano989

我对使用数据库和 SQL 很陌生,我在找出一个函数时遇到了一些麻烦,该函数允许我根据数据库中其他表的数据显示 jdbc 数据库中表中的记录。我将在下面说明:

“需求”表示例(列标题,“ID”为主键):

NAME|ADDRESS|DESTINATION|DATE|TIME|ID

“驱动程序”表示例(“注册”是主键):

USERNAME|PASSWORD|REGISTRATION|NAME

“JOURNEY”表示例(“JID”为主键,“REGISTRATION”为外键)

JID|NAME|ADDRESS|DESTINATION|DISTANCE|REGISTRATION|DATE|TIME|STATUS

下面是我用来在jsp文件上显示表格的代码:

public String retrieve(String query) throws SQLException {
    select(query);
    return makeTable(rsToList());//results;
}

private void select(String query){        
    try {
        statement = connection.createStatement();
        rs = statement.executeQuery(query);
        //statement.close();
    }
    catch(SQLException e) {
        System.out.println("way way"+e);
        //results = e.toString();
    }
}

private String makeTable(ArrayList list) {
    StringBuilder b = new StringBuilder();
    String[] row;
    b.append("<table border=\"3\">");
    for (Object s : list) {
      b.append("<tr>");
      row = (String[]) s;
        for (String row1 : row) {
            b.append("<td>");
            b.append(row1);
            b.append("</td>");
        }
      b.append("</tr>\n");
    } // for
    b.append("</table>");
    return b.toString();
}//makeHtmlTable

private ArrayList rsToList() throws SQLException {
    ArrayList aList = new ArrayList();
    ResultSetMetaData metaData = rs.getMetaData();
    int count = metaData.getColumnCount(); //number of column
    String columnName[] = new String[count];

    for (int i = 1; i <= count; i++)
    {
        columnName[i-1] = metaData.getColumnLabel(i);
    }
    aList.add(columnName);

    int cols = rs.getMetaData().getColumnCount();
    while (rs.next()) { 
      String[] s = new String[cols];
      for (int i = 1; i <= cols; i++) {
        s[i-1] = rs.getString(i);
      } 
      aList.add(s);
    } // while    
    return aList;
} //rsToList

所有这些代码都可以正常工作,如果我将查询传递给“检索”函数,例如:

String query = "select * from DRIVERS";

它将显示“驱动程序”表的所有记录。

不过,我想要做的只是从驱动程序表中列出在需求中指定的时间可用的驱动程序(意味着他们的注册当前未与需求同时出现在旅程表中的记录中)如果可能,我也只想显示与整个记录相反的“NAME”和“REGISTRATION”列。

我真的很感激这方面的一些帮助,因为我已经搜索了很长一段时间的解决方案,并且无法找到一个可以实现预期结果的功能。

干杯,

创建表格脚本:

-- --------------------------------------------------------
--DROP Table Demands;
CREATE TABLE Demands (
  Name varchar(20),
  Address varchar(60),
  Destination varchar(60),
  Date date DEFAULT NULL,
  Time time DEFAULT NULL,
  Status varchar(15) NOT NULL,
  id INT primary key
);


-- --------------------------------------------------------
--DROP Table Drivers;
CREATE TABLE Drivers (
  username varchar(20),
  password varchar(20),
  Registration varchar(10),
  Name varchar(20),
  PRIMARY KEY (Registration)
);


-- --------------------------------------------------------

--DROP Table Journey;
CREATE TABLE Journey (
  jid INT primary key
  Destination varchar(60),
  Distance integer NOT NULL DEFAULT 1,
  Registration varchar(10) NOT NULL,
  Date date NOT NULL,
  Time time DEFAULT NULL
);
艾哈迈德·沙万

以下查询可能会回答您的问题。

SELECT Drivers.Name, Drivers.Registration
FROM Drivers
LEFT JOIN Journey ON Journey.Registration = Drivers.Registration
LEFT JOIN Demands ON Demands.Date = Journey.Date
WHERE Demands.id IS NULL;

这将基于外键关系连接 JOURNEY 和 DRIVER。然后,它基于一个隐式关系,即 ,外连接 DEMANDS 和 JOURNEY DATE最后,我们只保留外连接条件失败的记录。

该模型有一个主要缺陷,因为 DEMANDS 和 JOURNEY 之间的关系基于 Date 类型的字段,据您提供的内容可以判断。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

创建一个用其他表中的记录计数填充的表

来自分类Dev

基于多个条件获取一个表中的记录但不提取其他表中的记录

来自分类Dev

根据表中的其他条件查询记录(选择记录)

来自分类Dev

根据另一个表中的记录值将记录插入表中

来自分类Dev

根据另一个表中记录的值将记录插入表中

来自分类Dev

ORACLE SQL根据其他表中的值从1个表中检索记录

来自分类Dev

根据同一表中的其他记录更新记录

来自分类Dev

根据另一个表中的记录过滤一个表中的记录

来自分类Dev

表中的多个记录中的一个记录

来自分类Dev

MS-Access 2016 - 根据另一个表中的记录更新记录

来自分类Dev

根据另一个表中的条件选择表中的记录?

来自分类Dev

按多列显示一个表中不在另一表中的记录

来自分类Dev

MySQL查询可根据另一个表中的记录将记录插入表中

来自分类Dev

如何根据来自另一个表的信息在表中插入新记录?

来自分类Dev

从另一个表更新表中的记录

来自分类Dev

如何从一个表中选择不应存在其他记录的记录

来自分类Dev

如何在php中的多个总记录中显示一个表行中的两个记录?

来自分类Dev

MySQL显示一个表中存在但其他表中不存在的行

来自分类Dev

MySQL显示一个表中存在但其他表中不存在的行

来自分类Dev

根据另一个表(部门)中的值从一个表(产品)中提取记录

来自分类Dev

根据另一个表的“相似”值从一个表中检索记录

来自分类Dev

一个SQL语句,用于根据明细表中的匹配记录对主表中的记录进行计数?

来自分类Dev

根据第一个表中的列在第二个表中插入新记录

来自分类Dev

删除不同表中其他记录引用的记录

来自分类Dev

根据另一个表中的列在表中插入记录(在Oracle SQL Developer中)

来自分类Dev

确保加入时来自一个表的记录始终覆盖其他表

来自分类Dev

根据另一个表中的记录量使用ntile

来自分类Dev

根据另一个表中值的存在排除聚合函数中的记录

来自分类Dev

通过匹配其他列将某个表的某个列中的某些记录替换为另一个表

Related 相关文章

  1. 1

    创建一个用其他表中的记录计数填充的表

  2. 2

    基于多个条件获取一个表中的记录但不提取其他表中的记录

  3. 3

    根据表中的其他条件查询记录(选择记录)

  4. 4

    根据另一个表中的记录值将记录插入表中

  5. 5

    根据另一个表中记录的值将记录插入表中

  6. 6

    ORACLE SQL根据其他表中的值从1个表中检索记录

  7. 7

    根据同一表中的其他记录更新记录

  8. 8

    根据另一个表中的记录过滤一个表中的记录

  9. 9

    表中的多个记录中的一个记录

  10. 10

    MS-Access 2016 - 根据另一个表中的记录更新记录

  11. 11

    根据另一个表中的条件选择表中的记录?

  12. 12

    按多列显示一个表中不在另一表中的记录

  13. 13

    MySQL查询可根据另一个表中的记录将记录插入表中

  14. 14

    如何根据来自另一个表的信息在表中插入新记录?

  15. 15

    从另一个表更新表中的记录

  16. 16

    如何从一个表中选择不应存在其他记录的记录

  17. 17

    如何在php中的多个总记录中显示一个表行中的两个记录?

  18. 18

    MySQL显示一个表中存在但其他表中不存在的行

  19. 19

    MySQL显示一个表中存在但其他表中不存在的行

  20. 20

    根据另一个表(部门)中的值从一个表(产品)中提取记录

  21. 21

    根据另一个表的“相似”值从一个表中检索记录

  22. 22

    一个SQL语句,用于根据明细表中的匹配记录对主表中的记录进行计数?

  23. 23

    根据第一个表中的列在第二个表中插入新记录

  24. 24

    删除不同表中其他记录引用的记录

  25. 25

    根据另一个表中的列在表中插入记录(在Oracle SQL Developer中)

  26. 26

    确保加入时来自一个表的记录始终覆盖其他表

  27. 27

    根据另一个表中的记录量使用ntile

  28. 28

    根据另一个表中值的存在排除聚合函数中的记录

  29. 29

    通过匹配其他列将某个表的某个列中的某些记录替换为另一个表

热门标签

归档