我需要在这里做一些事情,我对这应该如何运作感到困惑。
以下是我需要使用的变量:
Date Range
Employee ID
Team
以及可能的其他搜索字词(acct_number ='$ _ REQUEST [q]'),如果有人想要搜索特定的帐号。
每个变量都填充一个下拉选择,第一个选项是*表示所有记录。日期使用日期选择器,日历样式设置,并自动设置为日期1 =七天前和日期2 =今天。
我的查询:
SELECT * FROM table
WHERE job_date BETWEEN '$search_date1' AND '$search_date2' AND
employee_id='$searched_employee' AND team='$searched_team' AND
acct_number='$_REQUEST[q]'
ORDER BY employee_id desc
我知道记录在那里,但我的搜索仍然没有返回任何记录。在该日期之后,AND employee_id ='$ searching_employee'可以是*所以它应该返回所有记录,并且团队也是如此。
回应变量以确保设置某些东西给了我: 在2011-05-01和2011-05-31之间以及团队“团队”中找不到“员工”的记录。
使用BETWEEN后,我可以在Select语句中使用AND请求更多吗?
提前致谢!
- 乔尔
答案 0 :(得分:1)
您不能对WHERE子句使用'*'通配符。
尝试将变量用于您在查询中添加的条件,例如:
if( is_numeric( $searched_employee ) )
$employee_cond = " AND employee_id=$searched_employee";
else
$employee_cond = "";
并将$employee_cond
放入您的查询中,而不是AND employee_id='$searched_employee'
。
重复你需要的每一个条件。
答案 1 :(得分:0)
在日期范围条件周围加上括号:
SELECT * FROM表WHERE(job_date BETWEEN'$ search_date1'和'$ search_date2')AND employee_id ='$ searching_employee'AND team ='$ searching_team'AND acct_number ='$ _ REQUEST [q]'ORDER BY employee_id desc < / p>
答案 2 :(得分:0)
我认为这不是你的BETWEEN声明的问题,因为这是你“和”在一起的标准数量。你要求的是所有标准必须是真的,因为它被包含在集合中......
Ex:您的自/至日期是5月1日至5月31日,但您要查找的$ Searched_Employee在该范围内没有活动,或者该员工与您的Acct_Number没有关联$ searching_team等。
您正在明确地寻找所有这些条件。你可能打算让一些“OR”条件继续下去......比如
select
Jobs.*,
Employees.LastName,
Employees.FirstName,
Employees.{whatever other columns}
from
Jobs
join Employees on Jobs.EmployeeID = Employees.ID
where
Jobs.job_Date between StartDate and StopDate
AND Jobs.employee_id = SearchedEmployee
AND Jobs.team = SearchedTeam
AND Jobs.Acct_Number = SearchedAccount
*仅用于计数()或从查询返回的字段,而不是在where / join条件中(除非是计数())。因此,上面已经修改为保留所有“AND”子句,但也显示从连接表中获取特定或所有字段。
由于您的实际表格不可用,因此会修改查询的表名称。正如你所看到的,我做了Jobs。*来返回该表中的所有字段,但明确地包括了Employees。{某些单独的字段}。
希望这个澄清可以帮助您将来查询...