我对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