0
我想知道是否有一種很好的方法來獲取所有列名和特定行的值,其中滿足條件的一部分。也就是說,我想知道我的巨大嵌套AND和OR條件中的哪些字段,滿足哪些條件和它們的值。SQL查詢返回與where條件的一部分相匹配的列和值
問題是我實際上是通過一個數據表使用動態LINQ API,並且我將不得不讓它生成該查詢,或者完成其他操作來實質上檢查某些表單上的用戶定義的驗證規則。如果有人對如何解決這個問題有更好的想法,我會很感激。
我想知道是否有一種很好的方法來獲取所有列名和特定行的值,其中滿足條件的一部分。也就是說,我想知道我的巨大嵌套AND和OR條件中的哪些字段,滿足哪些條件和它們的值。SQL查詢返回與where條件的一部分相匹配的列和值
問題是我實際上是通過一個數據表使用動態LINQ API,並且我將不得不讓它生成該查詢,或者完成其他操作來實質上檢查某些表單上的用戶定義的驗證規則。如果有人對如何解決這個問題有更好的想法,我會很感激。
警告這是醜陋的 - 但它可能適用於你。
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,而不是手工維護它,那麼這樣做是可行的。
感謝您的輸入,我會在考慮完我正在嘗試的內容後再考慮。我正在生成SQL ......但從技術上講,它根本不需要擊中數據庫,我可以用LINQ to DataSets或LINQ to Objects來做所有事情。 – 2010-02-09 20:56:57
讓我們知道你如何繼續。我想這個問題會出現在很多應用程序中。 – 2010-02-09 22:11:44