我正在尝试为我的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变量重写为英文,因此可能会出现一些错误......
答案 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