2010-02-09 8 views
0

모든 열 이름과 조건의 일부가 충족되는 특정 행의 값을 가져 오는 좋은 방법이 있는지 알아 내려고하고 있습니다. . 즉, 내 거대한 중첩 AND 및 OR 내에서 어떤 조건이 충족되었는지, 어떤 조건 및 해당 값을 충족시키는지를 알고 싶습니다.where 조건의 일부와 일치하는 열과 값을 반환하는 SQL 쿼리

캐치는 실제로 DataTable보다 동적 인 LINQ API를 사용하고 있습니다.이 쿼리를 생성하거나 일부 양식에서 사용자 정의 유효성 검사 규칙을 본질적으로 확인하기 위해 다른 작업을 수행해야합니다. 누구나이 방법에 접근하는 방법에 대한 더 좋은 아이디어가 있다면, 나는 그것을 고맙게 생각할 것입니다.

답변

1

경고 이것은 지옥처럼 추악합니다. 그러나 그것은 당신을 위해 일할 수도 있습니다.


Select a.*, b.*, mycond1, mycond2, mycond3 
From a 
    Inner Join b On a.pk = b.pk 
    … rest of normal query … 

     -- set of conditions -- 
    Left Outer Join (select 1 as matched where mycondition1) mycond1 
    Left Outer Join (select 1 as matched where mycondition2) mycond2 
    Left Outer Join (select 1 as matched where mycondition3) mycond3 

-- Relationship between conditions 
Where (mycond1.matched is not null or mycond2.matched is not null) and mycond3 is not null 

아이디어는 상관 관계가있는 하위 쿼리를 사용하여 조건식의 개별 부분이 해당 행에 대해 true인지 여부에 따라 1 또는 null을 반환하는 것입니다. 그런 다음 개별 조건 식 간의 논리적 관계가 where 절에 적용됩니다.

은 수동으로 SQL을 생성하는 대신 수행 할 수 있습니다.

+0

입력 해 주셔서 감사 드리며, 현재 노력하고있는 것을 다 써 버린 후에 고려해 보겠습니다. 나는 SQL을 생성 중입니다 ...하지만 기술적으로 DB를 전혀 칠 필요가 없습니다. LINQ를 사용하여 DataSet 또는 LINQ to Object로 모든 작업을 수행 할 수 있습니다. –

+0

어떻게 지내는지 알려주세요. 나는이 문제가 많은 응용에서 나타날 것이라고 상상한다. –

관련 문제