2013-12-19 2 views
0

자바 토론 게시판에 맞는 SQL 쿼리를 만들려고합니다. 내 프로그램은 기본적으로 PreparedStatement를 통해 GUI에 표시 할 사용자 이름 인 messagetext (생성 날짜)를 필요로합니다. ,중첩 된 SQL 문 또는 뷰? 무엇이 이상적입니까?

직원 ID :

테이블 메시지 :

의 MessageID, projectid, 직원 ID, 보낼 메세지,

테이블의 직원을 만들

표는이 (내가 일부 열을 왼쪽)과 같이 사용자 이름

아니요 나는 사용자 이름이 아니라 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 

하지만 어떻게 하나 개의 문장에 함께 두 맞게합니까?

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

내가 두 resultstatements을 acceept 내 객체 생성 과정을 재 작업해야합니까 : 내 자바 코드는 문에서 얻는 데이터와 메시지 개체를 만들기 때문에? 아니면 더 좋은 방법이 있습니까?

면책 조항 : 나는 첫 번째 선택 문에서 직원의 이름을 얻을 수

+1

사용'외부 join' ... 그래서 거기에 약간의 오차가있을 수 있습니다 영어로 자바 변수의 일부를 재 작업 및 'PreparedStatement'에 넘겨주세요 –

답변

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 
+0

이것은 완벽하게 작동합니다. 방금 projectid =를 추가 했습니까? 끝에서 다시. – cflx