java - 嵌套 SQL 语句或 View ?什么是理想的?

标签 java sql view nested

我正在尝试为我的 Java 讨论板创建一个合适的 SQL 查询。我的程序基本上需要创建的用户名、消息文本(即创建日期)通过PreparedStatement 在 GUI 中显示。

表格如下所示(我省略了一些列):

表消息:

messageid、projectid、employeeid、messagetext、已创建

表员工:

员工 ID、用户名

不,我已经尝试过这个,效果很好,只是我需要用户名而不是员工 ID:

SELECT messageid, projectid, employeeid, messagetext, created, updated 
FROM message
WHERE projectid = 4

我知道我可以通过这样做获得正确的用户名:

SELECT username
FROM employee
INNER JOIN message
ON employee.employeeid=message.employeeid

但是我如何将两者整合到一个声明中呢?因为我的 JAVA 代码使用从语句中获取的数据创建了一个消息对象:

    String query="SELECT messageid, projectid, employeeid, messagetext, createdFROM message WHERE projectid= ?";

    stmt = con.prepareStatement(query);

    stmt.setInt(1, id);

    stmt.executeQuery();

    rs = stmt.getResultSet();

    while(rs.next()) {

        int messageid = rs.getInt("messageid");
        int projectid = rs.getInt("projectid");
        int employeeid = rs.getInt("employeeid");

        String messagetext = rs.messagetext ("messagetext ");
        String created = rs.getString("created");

        ObjMessage oMsg = new ObjMessage (messageid, projectid, employeeid, messagetext, created); 

        AllMessages.add(oMsg);
    }

我是否必须重新设计对象创建过程才能接受两个结果语句?或者有更好的办法吗?

免责声明:我将一些 JAVA 变量修改为英文,因此可能存在一些错误...

最佳答案

SELECT e.username, m.messageid, m.projectid, m.employeeid, m.messagetext, m.created, m.updated 
FROM employee e
INNER JOIN message m
ON e.employeeid=m.employeeid

关于java - 嵌套 SQL 语句或 View ?什么是理想的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20679474/

相关文章:

java - 用于财务计算和非终止计算的 Bigdecimal

mysql - 根据连接评估的条件对 mysql 表中的字段进行计数

c# - 需要帮助构建性能最佳的 SQL 查询

android - 有意传递 View

java - 以线程安全的方式获取集合的内容

java - 生成一个系列/返回系列中的第 n 项

java - 数据表if else语句显示

java - 解决Java Oracle并发更新/删除语句

view - 传递触摸事件

android 从 alertdialog 中删除 View