2010-07-27 4 views
1

임 자신이 SQL 광란에 열심히 노력하고 있습니다.SQL 테이블 A 왼쪽 조인 테이블 B 그리고 테이블 B의 최상위

: 나는 기본적으로 기록하고 성과있는 두 테이블을 가지고

, 내가 함께 두 테이블을 조인 내가 함께 아주 쉽게있어 레코드 당 결과 (0 이상)의 수를 계산하려면

Select records.Id, (IsNull(Count(outcomes.Id),0)) as outcomes 
from records 
Left Join 
outcomes 
on records.Id = outcomes.Id 
group by 
records.Id 

결과 테이블에도 타임 스탬프가 있습니다. 결과에 모든 레코드 조합에 대한 레코드를 생성하는 쿼리를 추가하면 결과 집합에 마지막 결과가 포함됩니다.

모든 SQL 전문가가 올바른 방향으로 나를 가리킬 수 있습니까?

건배,

+0

사용하고있는 데이터베이스? – Yellowfog

답변

1

시도 :

SELECT 
    dt.Id, dt.outcomes,MAX(o.YourTimestampColumn) AS LastOne 
    FROM (SELECT --basically your original query, just indented differently 
       records.Id, (ISNULL(COUNT(outcomes.Id),0)) AS outcomes 
       from records 
        LEFT JOIN outcomes ON records.Id = outcomes.Id 
       GROUP BY records.Id 
     ) dt 
     INNER JOIN outcomes o ON dt.Id = o.Id 
    GROUP BY dt.Id, dt.outcomes 
+0

똑똑하고 거의 완벽합니다! 그냥 두 번째 조인을 왼쪽 조인으로 변경해야합니다. 그렇지 않으면 결과에 아무 것도없는 레코드가 손실되었습니다. 감사합니다. – HeHasMoments

관련 문제