의 일치 집합을 찾기 I가 ControlNo 기록의 각 세트에 들어
기록
RuleNo| MsgLineNo | RuleStartingPos | RuleMsg
1 | 1 | 1 | Tiger1 Text
2 | 1 | 1 | Tiger1 Text
2 | 3 | 1 | Tiger1 Text3
ContrlNo| LineNo | Msg
1 | 1 | Tiger1 Text
1 | 2 | Tiger1 Text
1 | 3 | Tiger1 Text
1 | 4 | Tiger1 Text
2 | 1 | Tiger1 Text1
2 | 2 | Tiger1 Text2
2 | 3 | Tiger1 Text3
2 | 4 | Tiger1 Text4
3 | 1 | Horse 1
3 | 2 | Horse 2
3 | 3 | Horse 3
3 | 4 | Horse 4
RuleTable 2008R2
MessageTable SQL Server에서 다음 표 MESSAGETABLE 나는 규칙 fr을 적용하고 싶다. RULETABLE을 옴으로써 어떤 문제가 있다면 RULENo를 나열하십시오.
규칙 테이블을 보면 규칙 2가 규칙 1을 중첩합니다. 그리고 각 제어 번호에 대해 가장 일치하는 규칙 번호를 얻는 것이 요구 사항입니다. 예상 된 결과이며,
ContrlNo | RuleNo
1 | 1
2 | 2
3 | NULL
감사합니다, 제이
나는 당신의 예상 결과 뒤에 논리를 이해하지 않습니다. 더 철저하게 설명 할 수 있습니까? –
각 ContrlNo에 대해 모든 레코드 (LineNo, Msg)를 가져와 RuleTable (MsgLineNo, RuleMsg)과 대조해야합니다. – Jay
예를 들어 ContrlNo 1에 속한 레코드를 MessageTable에서 가져 와서 RuleTable과 비교하면 RuleNo 1은 100 %와 일치합니다. 그러나 RuleNo 2에는 두 가지 조건이 있으며 규칙 2의 두 번째 조건은 일치하지 않습니다. 결과는 ContrlNo | RuleNo (1 | 1). ContrlNo 2에 속한 레코드를 MessageTable에서 가져 와서 RuleTable과 비교하면 RuleNo 1은 100 %와 일치합니다. 하지만 RuleNo 2에는 두 가지 조건이 있으며 둘 다 100 %와 일치합니다. 최대 일치 규칙이 필요하므로이 경우 결과는 ContrlNo | RuleNo (2 | 2). – Jay