문제

나는 두 개의 테이블 부모와 자식이 있습니다 (PK/FK Guid와 관련하여 관련)

어린이는 타임 스탬프 (레코드 생성 날짜/시간)를 가지고 있습니다.

내가하고 싶은 것은 각 부모 기록에 대해 가장 최근의 아동 기록과 부모 기록을 얻는 것입니다.

SELECT 
    dbo_Parents.ParentName, 
    dbo_ChildEntry.CountPropertys, 
    dbo_ChildEntry.DateTimeStamp
FROM 
    dbo_Parents INNER JOIN dbo_ChildEntry 
ON
    dbo_Parents.ParentID = dbo_ChildEntry.ParentID
WHERE 
    ([WHAT SHOULD BE HERE?]))
도움이 되었습니까?

해결책

가장 최근의 항목을 원한다고 가정하면 상위 1과 주문을 사용해야합니다.

SELECT TOP 1
dbo_Parents.ParentName, 
dbo_ChildEntry.CountPropertys, 
dbo_ChildEntry.DateTimeStamp 
FROM dbo_Parents 
INNER JOIN dbo_ChildEntry ON dbo_Parents.ParentID = dbo_ChildEntry.ParentID 
ORDER BY dbo_ChildEntry.DateTimeStamp desc

설명 후 편집 : "각 학부모 기록에 대한 최신 아동 기록과 부모 기록":

WHERE dbo_ChildEntry.DateTimeStamp = 
      ( Select Max( dbo_ChildEntry.DateTimeStamp )
               from dbo_ChildEntry 
               where dbo_Parents.ParentID = dbo_ChildEntry.ParentId )

다른 팁

WHERE dbo.ChildEntry.DateTimeStamp = ( Select Max( c.DateTimeStamp )
                                         from dbo.ChildEntry c
                                        where dbo_Parents.ParentID = c.ParentId )
select p.ParentName, 
    c.CountPropertys, 
    c.DateTimeStamp
from (
    select max(DateTimeStamp) as DateTimeStamp, ParentID
    from dbo_ChildEntry
    group by ParentID) cm
inner join dbo_ChildEntry c on cm.DateTimeStamp = c.DateTimeStamp and cm.ParentID = c.ParentID
inner join dbo_Parents p on c.ParentID = p.ParentID

부모당 한 줄을 원한다는 것을 명확히 하셨기 때문에 이것을 시도하십시오. 모든 행에 대해, 그것은 이후 타임 스탬프가있는 자식 행을 검색합니다. Where 절에서 "다음"자식이없는 행을 필터링합니다.

SELECT 
    dbo_Parents.ParentName, 
    cur.CountPropertys, 
    cur.DateTimeStamp
FROM dbo_Parents 
INNER JOIN dbo_ChildEntry cur
    ON dbo_Parents.ParentID = cur.ParentID
LEFT JOIN dbo_ChildEntry next
    ON dbo_Parents.ParentID = next.ParentID
    AND next.DateTimeStamp > cur.DateTimeStamp
WHERE
    next.DateTimeStamp is null

노력하다

SELECT     dbo_Parents.ParentName,     dbo_ChildEntry.CountPropertys,     
max(dbo_ChildEntry.DateTimeStamp)
FROM     dbo_Parents 
INNER JOIN dbo_ChildEntry ON    dbo_Parents.ParentID = dbo_ChildEntry.ParentID
group by dbo_Parents.ParentName,     dbo_ChildEntry.CountPropertys
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top