在 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();
}
我有一个搜索和
这是我点击按钮进行搜索时的代码
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();
}