이 쿼리를 작성하는 방법을 잘 모르거나 누군가 나를 도와 준 것처럼 친절하다고 생각했습니다.SQL Server 2012의 상관 쿼리
나는 두 테이블 (열 이름은 보안을 위해 변경되었습니다)가 :
의 MessageID 이 센더 이
carbon_copy 테이블
이 MEMBER_ID를 carbon_copy_id
을 recipientid carbon_copy_id메시지 테이블
본질적으로 저는 카본 복사본을 허용하는 이메일 시스템을 쓰고 있습니다.
- 회원이 한 명의 수신자에게 메시지를 보내면 carbon_copy_id가 null 인 채 하나의 레코드가 메시지 테이블에 기록됩니다.
구성원이 둘 이상의받는 사람, 예를 들어 2 명의받는 사람에 대한 전자 메일을 보내는 경우 동일한 carbon_copy_id 및 각받는 사람에 대한 member_id를 사용하여 두 레코드를 탄소 복사 테이블에 삽입합니다. 그런 다음 탄소 복사 테이블에 삽입 된 공유 carbon_copy_id i가있는 메시지 테이블에 각 수신자 당 하나씩 두 개의 메시지 레코드를 삽입합니다.
는 carbon_copy의 CC로부터 mt.messageid, mt.carbon_copy_id, 아우터 선택 ((물건을 선택 (적용 message_table MT에서 oa.member_list ','+ 캐스트 VARCHAR 등 (cc.member_id)를 선택 여기서 cc.carbon_copy_id = mt.carbon_copy_id xml 경로 (''), TYPE)에 대한 cc.member_id 의 주문 .value ('.', 'varchar (max)'), 1,2, '')) oa (member_list) messageid = id_of_message order by messageid desc
카본 카피가 null이 아닌 memberlist와 함께 하나의 레코드가 필요합니다.
그러나 위에 설명 된 패러다임이 주어지면 삽입 된 두 레코드 목록이 생성됩니다. 내가 뭘 찾고있는 결과 집합을 하나의 두 레코드를 결합하고 carbon_copied 회원 id의 쉼표로 구분 된 목록을 반환하는 메시지 레코드의 carbon_copy_id null이 아닌 곳입니다.
아이디어는 메시지 목록을 반환하고 메시지가 카본으로 복사 될 때 중복 메시지를 표시하지 않는 것입니다. GMAIL과 비슷한 방식입니다.
도움을 주시면 감사하겠습니다.