2010-02-09 50 views
0

我想知道是否有一種很好的方法來獲取所有列名和特定行的值,其中滿足條件的一部分。也就是說,我想知道我的巨大嵌套AND和OR條件中的哪些字段,滿足哪些條件和它們的值。SQL查詢返回與where條件的一部分相匹配的列和值

問題是我實際上是通過一個數據表使用動態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 

的想法是使用相關子查詢以返回一個1或取決於條件表達式的各個部分是否是行真空。然後,在where子句中應用各個標準表達式之間的邏輯關係。

這個可能如果你生成的是SQL,而不是手工維護它,那麼這樣做是可行的。

+0

感謝您的輸入,我會在考慮完我正在嘗試的內容後再考慮。我正在生成SQL ......但從技術上講,它根本不需要擊中數據庫,我可以用LINQ to DataSets或LINQ to Objects來做所有事情。 – 2010-02-09 20:56:57

+0

讓我們知道你如何繼續。我想這個問題會出現在很多應用程序中。 – 2010-02-09 22:11:44

相關問題