SQL Server 2008을 사용 중이고 x
, y
및 z
의 세 테이블이 있습니다. 과 z
사이에 다 대다 관계를 만들려면 y
이 있어야합니다.다 대다 관계의 최대 값
x y z
-- -- --
id xid id
zid sort
위의 모든 필드는 int
입니다.
x
에 대해 sort
이 가장 높은 z
을 찾고 최상의 결과를 얻는 방법 (비정규 화 제외)을 찾고 모든 세 개의 테이블에서 모든 필드를 반환하고 싶습니다.
샘플 데이터 :
x: id
--
1
2
y: xid zid
--- ---
1 1
1 2
1 3
2 2
z: id sort
-- ----
1 5
2 10
3 25
결과 세트는 하나 이상의 z
이 같은 높은 sort
값이 존재하는 경우, 그때는 여전히 x
당 하나 개의 행을 원하는
xid zid
--- ---
1 3
2 2
주의해야한다.
실제 상황에서 세 결과 테이블에 필요한 다른 필드가 있습니다.
난 당신이 실제 상황의 해결책 후있어 가정? 각 테이블에 대해 두 개의 추가 필드를 사용하여 질문을 업데이트하고 검색 할 결과 세트를 정의 할 것을 제안합니다. – MPritchard
이 질문에 그냥 추가하십시오. 데이터베이스 디자인이 고정되었거나 여전히 구현되고 있습니까? 나는 당신의 "정렬"이 z 테이블에 있고 y 테이블에 없다는 것이 이상하다는 것을 알았다. 나는 대개 이와 같은 many to many 관계가 종종 "y"테이블에서 "z"가 관심을 가질만한 정렬이 있음을 발견합니다. 내가 틀렸다면 나를 무시하십시오, 문맥 없이는 알 수 없습니다. –
아직 구현 중이며 여러분이 말하는 것에 동의합니다.하지만 빌드되는 컨텍스트에서 정렬은 'z'테이블에 있어야하며 있어야합니다. – enashnash