2010-11-22 7 views
1

테이블 변수 테이블과 다른 테이블을 조인하려고합니다.SQL JOIN WITH WHERE

@ProcessTbl  OrderDetail 
Order   ID 
Status   Order 
Approved   DateTime 
Domain   Status 

OrderDetail 테이블에는 동일한 주문에 대해 여러 개의 열이 있습니다. 예를 들어

ID Order DateTime Status 
    1  1 11-17-10 Recived 
    2  1 11-18-10 Processing 
    3  1 11-19-10 shipped 

그래서 내가 원하는 무엇을 할 조인 @processtbl (테이블 변수) 에서와 최대 (ID) 최대 ID가이 경우에 날짜를 얻기 위해 주문 번호를 가지고 3

나의 결과는

order status approved domain datetime 
1  shipped true  finance 11-19-10 




    SELECT t.order 
      ,[od.DateTime] 
      ,t.Status 
      ,t.Domain 
     ,t.Approved  
    FROM @ProcessTable t 
    JOIN OrderDetail od ON od.order= t.order 
    WHERE od.ID = (SELECT MAX(id) FROM orderdetail WHERE od.order = t.order) 
    ORDER BY od.[DateTime], Approved ASC 

해야하지만 난 여전히, 중복 레코드를 받고이 두 테이블을 joning처럼 보이는입니다. 고유 레코드를 얻으려면 어떻게해야합니까?

+1

'job'이 스키마에없는, 곳에서 온 않았다

같은 뭔가를 시도? – RedFilter

답변

1

그냥 생각해 보니 SELECT DISTINCT을 (를) 수행하려고 시도 했습니까?

+0

별명 – Pinu

+2

@ Pinu를 사용할 때 아무 것도 반환하지 않습니다. 의미가 없습니다. 중복이 없다면 정확히 이전의 내용을 반환해야합니다 ... –

4
select p.order, od.status, p.approved, p.domain, od.datetime 
from @ProcessTable p 
inner join (
    select Order, max(ID) as MaxID 
    from OrderDetail 
    group by Order 
) odm 
inner join OrderDetail od on odm.Order = od.Order 
    and odm.MaxID = od.ID 
+0

다음 오류가 나타납니다 : '.'근처의 구문이 잘못되었습니다. – Pinu

+0

'order '를'[order]'로 바꿔보십시오. – RedFilter

+0

업데이트 된 질문 – Pinu

0
WHERE od.ID = (SELECT MAX(id) FROM orderdetail WHERE od.order = t.order) 

는 od.order는 서브 쿼리에서 orderdetail 테이블 있지만 외부 인스턴스를 참조하지 않습니다. WHERE od.ID = (SELECT MAX(id) FROM orderdetail as od1 WHERE od1.order = t.order)

+0

이 나에게 다음과 같은 오류 메시지가 나타납니다.'t '열이 검색어에 사용 된 테이블 이름이나 별명과 일치하지 않습니다. – Pinu