sql和多个where查询

sql和多个where查询,sql,Sql,我有一个输入屏幕,可以容纳8个输入值。输入值如下所示 tCustomerIDStart - tCustomerIDEnd tProjectIDStart - tProjectIDEnd tDateStart - tDateEnd tProjectStatusStart - tProjectStatusEnd 一旦用户在我的表单上单击submit,我想对我的SQLite数据库执行查询。下面的查询是我想要的内容的基本概述,但是如果用户只输入一对搜索条件,例如tDateStart-TDATEND

我有一个输入屏幕,可以容纳8个输入值。输入值如下所示

tCustomerIDStart  -  tCustomerIDEnd
tProjectIDStart - tProjectIDEnd
tDateStart - tDateEnd
tProjectStatusStart - tProjectStatusEnd
一旦用户在我的表单上单击submit,我想对我的SQLite数据库执行查询。下面的查询是我想要的内容的基本概述,但是如果用户只输入一对搜索条件,例如tDateStart-TDATEND,我不太确定如何构造查询。我可以让查询省略其他子句吗?WHERE语句中的第一个子句在调用其他子句之前是否必须求值为true。如果填充了所有字段,我可以构造一个查询,主要是使用WHERE语法,然后使用and来构建子句。但是,sql是否可以忽略一对空的搜索条件字段

  "SELECT  project.start_date, project.projectID, project.project_title, customer.customer, " &\
  "project.end_date, project.project_manager, project_status.project_status " &\
  "FROM project " &\
  "LEFT JOIN customer " &\
  "ON project.customerID=customer.customerID " &\
  "LEFT JOIN project_status " &\
  "ON project.project_statusID=project_status.project_statusID " &\
  "WHERE project.projectID BETWEEN " & tProjectIDStart & " AND " & tProjectIDEnd & " " &\
  "OR customer.customerID BETWEEN " & tCustomerIDStart & " AND " & tCustomerIDEnd & " " &\
  "OR project.project_status_id BETWEEN " & tStatusIDStart & " AND " & tStatusIDEnd & " " &\
  "OR project.start_date >= " & tDateStart & " AND " & tDateEnd & " " &\
  "ORDER BY date(project.start_date) ASC "

只需根据这些值是空还是空来构建查询

如果你从where开始的时候总是正确的,比如
1=1
,那么你只需应用其他过滤器,然后从
开始

sql = "SELECT  project.start_date, project.projectID, project.project_title, customer.customer, " &\
  "project.end_date, project.project_manager, project_status.project_status " &\
  "FROM project " &\
  "LEFT JOIN customer " &\
  "ON project.customerID=customer.customerID " &\
  "LEFT JOIN project_status " &\
  "ON project.project_statusID=project_status.project_statusID " &\
  "WHERE 1=1 "

if (tProjectIDStart != "" And tProjectIDEnd != "")
{
    sql = sql & " AND project.projectID BETWEEN " & tProjectIDStart & " AND " & tProjectIDEnd & " "
}
etc.. 

sql = sql &  "ORDER BY date(project.start_date) ASC "

谢谢,这是一个很好的方法