2008-10-31 8 views
2

가입 내가있어, ID, Table1ID, 위치 ServiceDate도움말 나는 두 개의 테이블이

을 table1.ID = table2.Table1ID에서 Table1을 테이블 2에 조인하는 쿼리. PersonCode = 'XYZ'

내가 원하는 것은 return Table1.PersonCode, Table1.Name, Table2.Location, Table2.ServiceDate, I don입니다. 모든 행을 원한다. 표 2에서 나는 t에만 관심이있다. 그는 각 위치에 대한 가장 최근의 ServiceDate로 행을 짓습니다. 이 일을 어떻게 하죠?

답변

3

뭔가 : 내가 INNER JOIN를 사용하여 첫 번째 레코드를 선택 할

SELECT 
    Table1.PersonCode, Table1.Name, Table2.Location, MAX(Table2.ServiceDate) 
FROM 
    Table1 
    INNER JOIN Table2 on Table1.ID = Table2.Table1ID 
WHERE 
    TABLE1.PersonCode = 'XYZ' 
GROUP BY 
    Table1.PersonCode,Table1.Name, Table2.Location 
+0

왜 LEFT JOIN입니까? INNER JOIN이 만족 스럽다고 생각 했나요? 귀하의 검색어를 수정합니다 - 내 대답은 아래 –

+0

을 참조하십시오 미안 해요 왼쪽 된 조인과 다른 질문에 대한 작업 - 편집 –

0

사용 MAX (ServiceDate는)

0

보십시오 :이 같은

select Table1.PersonCode,Table1.Name, Table2.Location, Table2.ServiceDate 
from Table1 
join Table2 on table1.ID = table2.Table1ID 
where table1.PersonCode = 'XYZ' 
and table2.ServiceDate = (select max(t2.ServiceDate) 
          from table2 t2 
          where t2.table1ID = table2.table1ID 
          and t2.location = table2.location 
         ); 
0

는, 역으로 레코드를 정렬 한 Table2.ServiceDate에 따라 시간순으로 정렬됩니다.

SELECT TOP 1 
    Table1.PersonCode, Table1.Name, Table2.Location, Table2.ServiceDate 
FROM 
    Table1 
    INNER JOIN Table2 on Table1.ID = Table2.Table1ID 
WHERE 
    TABLE1.PersonCode = 'XYZ' 
ORDER BY Table2.ServiceDate DESC 
GROUP BY 
    Table1.PersonCode,Table1.Name, Table2.Location 
관련 문제