-2
我有其在web應用程序通過用戶接口動態生成的查詢。用戶可以在創建自定義報告時選擇任意數量的過濾器,然後將其轉換爲SQL語句中的「Where」子句。多「OR」 WHERE子句中具有重複的默認條件
這些過濾器可以彼此與「與」或「或」條件來連接。 這可能導致在where子句中,如下所示:
SELECT
...
FROM
company c,
INNER JOIN team t,
INNER JOIN user u,
...
WHERE (c.trashed = 0)
AND (t.trashed = 0)
AND (u.trashed = 0)
AND (opp.fee_total_value = 10000)
OR (opp.fee_total_value > 5000)
--AND (c.trashed = 0)
--AND (t.trashed = 0)
--AND (u.trashed = 0)
AND (opp.fee_total_value < 6000)
OR (opp.fee_total_value > 8000)
--AND (c.trashed = 0)
--AND (t.trashed = 0)
--AND (u.trashed = 0)
AND (opp.fee_total_value < 9000)
ORDER BY ...
不管的「或」,「與」條件的數目我有3個默認的檢查開始,然後添加每一個新的「OR」子句之後。這些是邏輯上刪除的記錄條件 - .trashed = 0
我正在尋找一種方式來做到這一點沒有每一個新的「或」用戶請求後重覆上述3「看不上」檢查。換句話說,我想找到一種方法來排除我在代碼示例中註釋過的行。
您需要向我們展示你的代碼....難道我們只是爲了猜測它是如何產生的?我不認爲你甚至需要做到這一點的SQL將優化的多餘檢查出來,你爲什麼要擺脫他們?附:這聞起來可能會導致SQL注入攻擊,你有沒有考慮過這個?你也應該有你的周圍AND和OR塊... – Milney
請張貼一些示例數據支架和預期的O/P。 –