2017-09-17 1 views
0
try { 

    String sql = "SELECT MAX(date),empNo,basicAmt,increment FROM Basic_sal where empNo=?"; 
    pst = conn.prepareStatement(sql); 
    String empNO = com_emp.getSelectedItem().toString(); 
    pst.setString(1, empNO); 
    rs = pst.executeQuery(); 

    if (rs.next()) { 
     //JOptionPane.showMessageDialog(null,"Success !!!"); 
     float a = rs.getFloat("basicAmt"); 
     String b = Float.toString(a); 
     txt_basicsalary.setText(b); 

Netbeans에서이 코드 파트를 사용하여 기본 급여 테이블에서 최대 날짜를 가져 왔습니다. 하지만 출력은 최근에 추가 된 레코드의 날짜를 제공하지만 실제로 원하는 것은 empNo에 따른 최대 날짜입니다. 그러나 쿼리는 SQLiteManager에서 최대 날짜를 제공합니다. 누군가가 곧 답변을 제공 할 수 있다면 좋을 것입니다. SQLiteManager를 사용하고 있습니다.자바를 사용하는 sql 테이블에서 최대 날짜 선택

는 Mureinik @ ..... 그래, 난 당신이 그 직원에 대한 최대 (날짜)가 각 직원에 대한 레코드를 선택하려는 코드

+0

SQLite에 대해이 코드를 실행하고 있습니까? 그렇지 않은 경우 어떤 RDBMS를 사용하고 있습니까? –

+1

어떤 [tag : rdbms]를 사용하고 있습니까? 또한 -이 모든 필드가 필요합니까, 아니면 'empno'와 최대 날짜가 필요한가요? – Mureinik

답변

0

에있는 모든 필드가 필요합니다. 여기

SELECT date,empNo,basicAmt,increment FROM Basic_sal bs where empNo=? AND date = (SELECT max(date) FROM basic_sal WHERE empNo = bs.empNo); 

그 하위 쿼리가 특정 레코드의 직원에 대한 최대 날짜를 잡아 사용 (아마 몇 가지 예외를 제외하고 ... 관계없이 RDBMS의) 상관 하위 쿼리를 사용하여 떨어져 당신의 가장 좋은 것을 수행과 WHERE 절의 필터.