2011-02-10 4 views
0

특정 from_id에서 작성된 모든 메시지를 선택하려고하지만 같은 제목 ID의 최신 메시지 만 표시하려고합니다. 예를 들어 내 메시징 테이블은 다음과 같다 : 메시지, 즉 대상 ID가 메시지 ID와 동일한 메시지에 다음과 같은 메시지 체인에있는 경우제목 ID가 동일하지 않은 경우 모든 메시지를 선택하십시오.

Id 
From_ID 
To_ID 
Subject 
Subject_ID 
Date 
[Content] 
Percentage 

각 메시지는 고유 한 ID로 작성됩니다. 내가 로그인있어 현재 사용자가 선택할 수있는 코드가 있습니다

Dim query = From p In db.Messages Select p Where p.From_ID = Userid 

을하지만 난 어떻게 동일한 주제 ID를 가진 최신 메시지 그룹화를하는 확신입니다. 덕분에 감사합니다.

답변

1

은 내가 Visual Basic의 전문가가 아니지만, 당신은 SubjectID에 의해 그룹에 반환 된 메시지를 Group By를 사용하고 단지 Select를 사용하여 각 그룹의 최신 메시지를 선택할 수 있습니다. 구문은 다음과 거의 같습니다

Dim q = From p In db.Messaes 
     Where p.From_ID = Userid 
     Group By Subject = p.Subject_ID 
     Into Messages = Group 
     Select ... 

... 비트 (Messages에서 사용 가능) 현재 그룹의 메시지의 최신 메시지를 반환하는 하위 쿼리로 교체해야합니다.

+0

메신저 메시지가 테이블의 필드를 표시하지 않는 것처럼 '메시지'를 사용할 때와 같이 하위 쿼리를 구성하는 방법이 무엇인지 잘 모르겠다. – Houlahan

+0

@Houlahan - 메시지는 메시지 모음이므로 중첩 쿼리가 필요합니다. 예를 들어,'Messages'를 날짜순으로 정렬 한 다음 첫 번째 메시지를 가져옵니다. –

+0

"Dim q = From p in db.Messages 여기서 p.From_ID = Userid Group By Subject = p.Subject_ID Messages = Group From p 메시지 순서 p.Date Descending p 선택"시도했지만 그룹화하지 않았습니다. 메시지는 올바른 길에 있거나 완전히 잘못된 길입니다. – Houlahan

관련 문제