이의 나는 다음과 같은 데이터가 있다고 가정 해 보자는 :는 SQL - 정렬 값을 기준으로 카티 제품에
Product
IdPk | Name
-------------
guid1 | Printer
guid2 | Oil
guid3 | Etc.
guid4 | Etc..
ProductPart
PartIdPk| ItemId | PartName
-------------------------
guid100 | guid1 | Ink
guid101 | guid1 | Paper
guid102 | guid2 | Automobile Fuel
guid103 | guid2 | Cooking
ProductPartType
TypeIdPk| ItemId | PartId | TypeName
---------------------------------
guid200 | guid1 | guid100 | Cyan < Types of ink
guid201 | guid1 | guid100 | Magenta
guid202 | guid1 | guid100 | Black
guid203 | guid1 | guid100 | Yellow
guid204 | guid1 | guid101 | Photocopier < Types of paper
guid205 | guid1 | guid101 | Envelope
guid206 | guid1 | guid101 | Card
guid207 | guid2 | guid102 | Petrol < Types of automobile fuel
guid208 | guid2 | guid102 | Diesel
guid209 | guid2 | guid103 | Olive < Types of cooking oil
guid210 | guid2 | guid103 | Sunflower
따라서, 각 제품은 하나 개 이상의 부품을 가지고 있으며, 각 부분은 하나 개 이상의 유형이 있습니다.
제품, 부품 및 유형을 선택하고 싶습니다. 수천 개의 항목이있을 수 있으므로 일반적으로 선택하는 것과 동시에 필터링하는 것이 좋습니다. 이 세 테이블은 종종 데카르트 제품 쿼리로 이어질 것이고, 그 시나리오에서 "나에게 (잉크가있는 타입 이름으로) 정렬 된 상위 2 개의 제품을 제공하십시오."와 같은 쿼리를 실행해야합니다. 일부는 요리) "
누구 아이디어가 있습니까?
select ppt.*, pp.PartName, p.Name
from ProductPartType ppt join
ProductPart pp
on ppt.PartId = pp.PartId join
Product p join
pp.ItemId = p.idPK
where <whatever>
그런 다음 당신은 당신이 원하는대로 쿼리를 수행 할 수 있습니다 사전
사실, 테이블 구조는 처음에는 외관이 다소 어색해 보입니다. Product 테이블, TypeCategory Table (잉크, 용지), TypeCategory (Cyan, Magenta, 검은 색) 및 ProductType 테이블 (제품과 특정 유형이있는 많은 테이블) 내가 뭐 놓친 거 없니 ? –
나는 문제 영역을 설명 할 수있는 한 당신이 묘사하는 테이블과 유사하다고 말할 수는 있지만 간결함을 단순화하려고했습니다. 즉, 원한다면 특정 행이 "열"을 나타내는 데카르트 제품에서 가능합니다. 해당 행별로 효과적으로 정렬하는 쿼리를 만드시겠습니까? 당신은 x가 값을 가지고있는 각 행에 대해 왼쪽 외부 조인으로 인해 y가 null 일 수 있기 때문에 "sort by x by y"를 말할 수 없다는 것을 염두에 두어야합니다. –
x로 순서를 제안했을 것입니다. : 널 값으로 주문할 수 있음을 알거나 "주문"([xx]가 Null 인 경우 'abc'Else 'xyz'End). 다시 한 번 사례를 제시하십시오. 이렇게하면 대답을 더 쉽게 할 수 있습니다. –