2014-12-03 26 views
0

如果完成预订表单,我现在可以提取准确的数字。但是由于业务场景的原因,'DateIN'将在稍后的日期完成。如果预订没有完成,那么它会将我的数字完全抛弃。在MySQL中创建查询返回疯狂数字

在这种情况下,该字段默认为1970/1/1,直到更新。我想要做的是以某种方式忽略这些字段,我已被告知可能将字段更改为null,直到稍后更新可能会解决我的问题,但是我不知道如何执行此操作。

代码如下。

SELECT 
SUM((MatCost+TimeCost)+((DateIn-DateOut)*RentPD+((DateIn-DateDue)*10))-DepReq) AS TotalDue, 
employee.Fname, employee.Sname 
FROM booking 
INNER JOIN customer ON booking.CustID = customer.CustID 
INNER JOIN costume ON booking.CostID = costume.CostID 
INNER JOIN employee ON booking.EmpID = employee.EmpID 
GROUP BY employee.Fname, employee.Sname 
ORDER BY TotalDue DESC 
+0

... employee.EmpID ** WHERE DateIn IS NOT NULL ** GROUP BY ... – symcbean 2014-12-03 12:53:46

+0

那太好做,欢呼的人 – ababusa 2014-12-03 13:04:05

回答

0

您可以运行在DateIn领域的更新查询,并将其设置为null哪里那里有“1970/1/1” 即。

update booking 
set DateIn = null 
where DateIn = '19700101' 

,然后在上面的查询

SELECT 
SUM((MatCost+TimeCost)+((DateIn-DateOut)*RentPD+((DateIn-DateDue)*10))-DepReq) AS TotalDue, 
employee.Fname, employee.Sname 
FROM booking 
INNER JOIN customer ON (booking.CustID = customer.CustID AND booking.DateIn is not null) 
INNER JOIN costume ON booking.CostID = costume.CostID 
INNER JOIN employee ON booking.EmpID = employee.EmpID 
GROUP BY employee.Fname, employee.Sname 
ORDER BY TotalDue DESC 

我希望这有助于..

+0

或者你也可以通过添加更改您的查询的WHERE子句像 其中DateIn <>“ 19700101' – techno 2014-12-03 12:28:58

+0

哎,首先感谢您的回复,但我不知道我会在哪里放第一条语句 – ababusa 2014-12-03 12:35:03

+0

首先声明为? – techno 2014-12-03 12:44:09

0

我已经设法解决它,是我的一个新手的错误:在DateIn值应已被默认设置为空。业余我知道,但感谢Tejal和Symcbean的帮助。