문제

쿼리를 통해이 제외 행렬을 달성하는 가장 좋은 방법은 무엇입니까?

테이블에는 고정 된 수의 제품이 있으며 아이디어는 제품이 고객에게 판매되는 경우 (행으로 표시) 다른 제품 (열)은 아래 규칙 매트릭스를 기반으로 판매되거나 판매되지 않을 수 있습니다. 목표는 주어진 판매 된 제품 코드에 대해 판매 할 수있는 제품 코드를 얻는 것입니다.

ProductCode|MRLSPN|MRLSPPN|MRLSDF|MRLSPDF|LGS|LGP|HOBN|HODF|HVO|HVOF
MRLSPN     |No    |No     |No    |No     |No |Yes|No  |No  |No |No  
MRLSPPN    |No    |No     |No    |No     |No |No |No  |No  |No |No  
MRLSDF     |No    |No     |No    |No     |No |Yes|No  |No  |No |No  
MRLSPDF    |No    |No     |No    |No     |No |No |No  |No  |No |No  
LGS        |No    |No     |No    |No     |No |Yes|No  |No  |No |No  
LGP        |Yes   |No     |Yes   |No     |No |No |No  |No  |No |No
HOBN       |No    |No     |No    |No     |Yes|Yes|No  |No  |No |No  
HODF       |No    |No     |No    |No     |Yes|Yes|No  |No  |No |No  
HVO        |Yes   |Yes    |Yes   |Yes    |Yes|Yes|Yes |Yes |No |No  
HVOF       |Yes   |Yes    |Yes   |Yes    |Yes|Yes|Yes |Yes |No |No  

열을 가로 질러 행으로 준비.

도움이 되었습니까?

해결책

매트릭스에서 다음과 같은 연관성 테이블로 형식을 변경할 수 있습니까?

표 추가 제품 : SetProductCode 추가 제품 코드

그래서 당신의 테이블은 모양이 될 것입니다

SoldProdCode, Additional ProdCode
MRLSPN, LGP
MRLSDF, LGP

이제 단순히 쿼리를 실행할 수 있습니다

SELECT AdditionalProductCode
FROM AdditionalProducts
WHERE SoldProductcode='MRLSPN'

편집하다

이 접근법의 또 다른 이점은 MRLSPN을 구매하면 특별 할인을 제공하는 경우 10% 할인 된 가격으로 LGP를 받고 MRLSDF를 구매하면 15 $ 할인 될 수 있다는 것입니다. 이 모델을 사용하면 추가 속성을 포함하도록 협회 테이블을 확장 할 수 있습니다. 이것은 귀하의 모델에 적용되거나 적용되지 않을 수 있습니다.

다른 팁

다수의 링크 테이블입니다.

Sold   CanBeSold
----   ---------
MRLSPN LGP
MRLSDF LGP
…

, 및 쿼리 :

SELECT  CanBeSold
FROM    matrix
WHERE   Sold = @Product

32 개 이하의 열을 보장 할 수있는 경우 int (32 비트)를 비트 플래그 필드로 사용하여 구현할 수 있습니다. 그러나 다수의 관계는 더 유연 할 것입니다.

다수의 매핑 테이블, ProductCode2ProductCodemapping을 만듭니다

CREATE TABLE ProductCode2ProductCodeMapping
(
   ProductCodeId int,
   AllowedProductCodeId int
)

이 두 열을 모두 사용하는 복합 기본 키.

그런 다음 모든 제품 및 관련 제품에 대해 행을 삽입하십시오.

그런 다음 간단히 쿼리 :

SELECT AllowedProductCodeId 
FROM ProductCode2ProductCodeMapping
WHERE ProductCodeId = @myProductCodeId

제품에 대한 정수 ID가없는 경우 대신 숯 제품 코드를 추가하거나 사용할 수 있습니다 (전자를 선호합니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top