我對SQL編程比較陌生,所以請對我輕鬆點。SQL左/內/正常連接vs條件語句的地方
我目前正在編寫一個查詢,它會根據其中一個外部參數的值輸出結果。目前的結構看起來像以下:
@ShowEntireCategory bit = 0
select distinct
p.pk
p.name
--other columns
from dbo.Project P
--bunch of left joins
where p.Status = 'Open'
--other conditions
我想實現的是:當ShowEntireCategory的值是1(通過單選按鈕選擇程序改變),它會顯示所有子類別的記錄,這是內部類別。當它爲0時,它只會顯示選定子類別的記錄,而該類別中的其他子類別則保持不變。
我一直在執行a research上的最佳方法,並且它narrowed down爲WHERE語句或JOINs。
我想知道的是:我應該爲我的場景使用哪些方法?在我的情況下,優先級是優化(最短執行時間)和易於實現。
注:我主要在這裏的目標是不接收準備在這裏使用的代碼(儘管一個例子的代碼片段將受到歡迎),我只是想知道一個更好的方法,這樣我就可以繼續朝着這個方向研究。
預先感謝您!
UPDATE
我已經對數據庫結構進行更多的研究,並設法把相關的問題
一個參數是dbo.Project表,其中包含:PK,CategoryKey(FK) (連接到第二個表中的那個),名稱,描述和所有其他無關的參數。
第二個是dbo.Area表,其中包含:PK,AreaNumber,Name,CategoryKey(FK),IsCategory(1 = is category,0 = not category)。
對不起,但我工作在快節奏的環境中,這是我儘可能多的擠壓。請讓我知道,如果這是不夠的。
這在某種程度上取決於類別和子類別在數據庫中的存儲方式。 – BrandonM
@BrandonM你能澄清一下嗎?我現在可以回答的唯一方法是「1個類別內的4個子類別,每個子類別都有自己的標識符」。 –
你能提供你的表格結構和一些樣品數據嗎?作爲sql語句理想,因此我們可以爲測試設置一個環境 – Philipp