다음 표를 사용하여 세 테이블에 입력 된 목록으로 내 웹 사이트의 표를 채 웁니다. 3 테이블 이상 조인에서 중복 제거
BND_Listing = Main Data
BND_ListingCategories = My Category data for the Listing Table
BND_LingingJunction = Junction Table for multi-category listings.
난 그냥 어떤 목록이 1 개 이상의 종류가 있지만 수있는 접합 테이블을 구현했습니다 내 문제 arrises 나는 나의 CatX & 두 번 목록에 표시됩니다 (CategoryY & CategoryZ을 사용 ListingX)에있을 때 왜냐하면 왜 두 번 나타나지만 모든 카테고리에 대해 한 번만 표시되기를 바라는 이유를 이해할 수 있기 때문입니다.
SELECT DISTINCT * FROM BND_ListingJunction
JOIN BND_listing on BND_listing.LID = BND_ListingJunction.Junc_LID
JOIN BND_ListingCategories
on BND_ListingCategories.CatID =
BND_ListingJunction.Junc_CatID
WHERE (CategoryName = '[querystring:filter-Category]' or
'[querystring:filter-Category]'='All')
and (City = '[querystring:filter-City]' or
'[querystring:filter-City]'='All')
and (Region= '[querystring:filter-State]' or
'[querystring:filter-State]'='All')
and (Country= '[querystring:filter-Country]' or
'[querystring:filter-Country]'='All')
and isnull(Company,'') <> ''
ORDER by Company ASC
는 나는 1 내 접합 테이블에서 끌어 있기 때문에 여기에 작동하지 않는 별개의 사용 아마도 쿼리 요구 다르게 구성 할 수 실현?
뚜렷한 것은 쿼리의 모든 출력 열에 적용되기 때문에. –
@CharlesBretana 그래서 내 JOINS에도 별개로 적용됩니까? – UserSN
아니요, 수정 된 답변보기. Distinct가 전체 쿼리의 최종 출력에 적용됩니다. 전체 출력 (모든 열)을 고려하여 동일한 행 (모든 열 값이 동일)이 있으면 여분의 중복이 제거됩니다. 쿼리는 쿼리의 모든 테이블에서 모든 항목을 선택 했으므로 범주 값이 각 범주마다 다르므로 해당 행이 다르므로 제거되지 않습니다. 출력을 Listing 테이블의 컬럼으로 제한해야합니다. 원하는 열을 명시 적으로 나열하거나 하위 쿼리를 사용할 수 있습니다. –