我想创建一个商业目录,我在其中使用以下查询从包含商业信息的2个表中提取数据。TSQL查询过滤目录
select *
from BND_Listing
left join BND_ListingCategories on BND_Listing.CatID = BND_ListingCategories.CatID
order by Company asc
我有我使用的“过滤器”真的只是我需要添加到我上面的查询,将听来查询传递的字符串值组件来过滤上述查询,拥有3个下拉菜单形式由形式。
在我的形式提交我重新导向到相同的URL,但将基于从3个下拉选择字段值在我的网址如下。
filter-Category=[Category]&filter-City=[City]&filter-State=[State]
我已经得到了这个工作正常,但没有价值传递到我的网址时有困难。当用户仅过滤3个可能字段中的1个时会发生这种情况。为了解决这个问题我想我可以创建一个“全”值会像过滤器国家= ALL
我如何更新我的查询提取数据侦听的查询字符串,这些过滤器?
任何洞察力,例子真的很感激。
希望我有道理我还是新的节目。
,直到所有的过滤器都设置下面的查询返回0的结果。如果只设置了1个过滤器,它会使我的应用程序崩溃。
select *
from BND_Listing
where
(Category = '[querystring:filter-Category]'
or '[querystring:filter-Category]'='All')
and
(City = '[querystring:filter-City]'
or '[querystring:filter-City]'='All')
and
(State = '[querystring:filter-State]'
or '[querystring:filter-State]'='All')
UPDATE:
感谢所有输入的每一个人。
我试图在SQL Server Management Studio中这个简化查询测试。
SELECT *
FROM BND_listing
WHERE city = IsNull('Trinity', city)
它即使'三位一体其实在我在BND_Listing
表记录一个返回城市没有结果。
我明白一切都会增加更多的过滤器,但这个基本的查询仍然不拉什么?
更新2:
在这里我没有按排序按钮,并有尚未通过任何查询字符串值的网页加载。如果我想让我的网格加载所有表格记录,我应该为我的基本查询使用UNION命令。
select *
from BND_Listing
加上用于过滤结果的更复杂的查询?到目前为止,由于WHERE语句,下面的所有查询示例都不会从我的网格中抽取任何内容。
谢谢蒂姆我刚刚读了一下关于COALESCE的了解。所以在你的例子(...)我会继续与COALESCE并包括所有的过滤器? – UserSN