嵌套的SQL语句或视图?什么是理想的?

时间:2013-12-19 10:42:51

标签: java sql view nested

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

表格看起来像这样(我遗漏了一些列):

表格消息:

messageid,projectid,employeeid,messagetext,created

表员工:

employeeid,用户名

不,我已经尝试了这项工作正常,除了我需要用户名而不是employeeid:

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变量重写为英文,因此可能会出现一些错误......

1 个答案:

答案 0 :(得分:2)

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