这是一个租房子的一个选择控件,我需要一个存储过程。下面这些 城市,地区,户型,发布日期,价格是下拉列表里的选项,默认选项都是“所有”。有可能用户只选择其中几个。比如:用户选择了城市和地区其它的都没有选择就是搜索出城市和地区相关的信息。再比如用户只选择了价格就显示出那个价格的所有房子的信息,所以这些条件都得考虑到。房子的基本信息都放在NEW表中,直接 select * from new 就可以了。
字段都写成中文就可以了城市  地区  户型  发布日期  价格        关键字所有  所有  所有   所有     所有        所有
北京  朝阳  二居   1天      500以下     海丰园(关键字搜的是小区名)
北京  海淀  三居   2天      500-1000    清华园
...   ...   ...    3天      1000-2000   ...
...   ...   ...    4天      2000-3000   ...
...   ...  ...     5天      3000-4000   ...
...  ...   ...     6天      4000-5000   ...
...   ...  ...     一星期   5000-7000  ...
...  ...   ...     两星期   7000以上    ...
用SQL语句我是怎么也实现不了了,我想问问是不是可以在.net代码里先过一下,可以简化存储过程呢?我想在C#中把“当前日期”和数据库里字段的“日期”都转成字符型,然后把那个数据差出来再和1天,2天这样的数据进行比较,得出我要的结果。还有就是我怎么用“价格”一个下拉框,实现 500以下,500-1000 这样的方法
不管什么方法吧,请大家给我出出主意,看我这个怎么实现这个功能,谢谢了。

解决方案 »

  1.   

    写一个字段给你看一下,其他的你自己家
    select * from new where (城市='选择的值' or '选择的值'='所有') and ....
      

  2.   

    存储过程声明变量是赋默认值null
    使用where 价格=500 or 价格 is null
      

  3.   

    我来告诉你吧。。OPEN数据库 SqlDataAdapter adapter = new SqlDataAdapter();        SqlCommand IDCommand = new SqlCommand(null, IDConnection);
     IDCommand.CommandText =SELECT * FROM 表 DERIVEDTBL WHERE (城市 LIKE @城市+'%') AND (地区 LIKE @地区+'%') AND (户型 LIKE @户型+'%')等等等等
    adapter.SelectCommand = IDCommand;
    关闭数据库
     DataSet dss = new DataSet();
            adapter.Fill(dss, "search");
     GridView1.DataSource = dss.Tables["search"].DefaultView;
            GridView1.DataBind();
      

  4.   

    @户型, @地区,@城市是需要你付值的。比如。
     IDCommand.Parameters.AddWithValue("@户型", DropDownList1.SelectedValue.Trim());
    还有。。这些字段必须在一个表里面。如果在多个表。那就要写新的sql语句了。