在 SELECT 语句中使用 WHERE 两次

Using WHERE twice in SELECT Statement

我有一个搜索和

这是我点击按钮进行搜索时的代码

void GetProducts()
{
    con.Open();
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con;
    cmd.CommandText = "SELECT Products.ProductID, Products.Name, Categories.Category, " +
        "Products.Code, Products.Image, Products.Description, Products.Price, " +
        "Products.IsFeatured, Products.DateAdded, Products.DateModified, Products.Status, Products.Available, Products.Criticallevel " +
        "FROM Products INNER JOIN Categories ON Products.CatID = Categories.CatID WHERE Products.Available <= Products.Criticallevel";
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();
    da.Fill(ds, "Products");
    lvProducts.DataSource = ds;
    lvProducts.DataBind();
    con.Close();
}

void GetProducts1(string keyword)
{
    con.Open();
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con;
    cmd.CommandText = "SELECT Products.Available, Products.Criticallevel, Products.ProductID, Products.Name, Categories.Category, " +
        "Products.Code, Products.Image, Products.Description, Products.Price, " +
        "Products.IsFeatured, Products.DateAdded, Products.DateModified, Products.Status " +
        "FROM Products INNER JOIN Categories ON Products.CatID = Categories.CatID " +
        "WHERE Products.ProductID LIKE '%" + keyword + "%' OR Products.Name LIKE '%" + keyword + "%' " +
        " OR Categories.Category LIKE '%" + keyword + "%' OR Products.Code LIKE '%" + keyword + "%' " +
        " OR Products.Description LIKE '%" + keyword + "%' OR Products.Price LIKE '%" + keyword + "%' OR Available <= Criticallevel";
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();
    da.Fill(ds, "Products");
    lvProducts.DataSource = ds;
    lvProducts.DataBind();
    con.Close();
}

protected void btnSearch_Click1(object sender, EventArgs e)
{
    if (txtSearch.Text.Trim() == "")
    {
        GetProducts();
    }
    else
    {
        GetProducts1(txtSearch.Text);
    }
}

当页面被查看时,WHERE 起作用。

但是每当我开始使用搜索和点击按钮时,

哪里不行。

这是我的页面(仅供参考)

当我搜索时它应该显示相同的消息 No Records Found 因为WHERE下没有商品。

但是当搜索(按钮被点击)时,

产品展示。

请大家帮忙! 提前谢谢你

你把所有的东西都保持在 OR 状态,这是错误的。条件应该是这样的 WHERE Products.Available <= Products.Criticallevel AND (condition1 or condition2 or condition3)

void GetProducts1(string keyword)
{
    con.Open();
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con;
    cmd.CommandText = "SELECT Products.Available, Products.Criticallevel, Products.ProductID, Products.Name, Categories.Category, " +
        "Products.Code, Products.Image, Products.Description, Products.Price, " +
        "Products.IsFeatured, Products.DateAdded, Products.DateModified, Products.Status " +
        "FROM Products INNER JOIN Categories ON Products.CatID = Categories.CatID " +
        "WHERE Available <= Criticallevel AND (Products.ProductID LIKE '%" + keyword + "%' OR Products.Name LIKE '%" + keyword + "%' " +
        " OR Categories.Category LIKE '%" + keyword + "%' OR Products.Code LIKE '%" + keyword + "%' " +
        " OR Products.Description LIKE '%" + keyword + "%' OR Products.Price LIKE '%" + keyword + "%')";
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();
    da.Fill(ds, "Products");
    lvProducts.DataSource = ds;
    lvProducts.DataBind();
    con.Close();
}