在MySQL中创建查询会返回疯狂的数字

时间:2014-12-03 11:58:32

标签: mysql

如果预订表格完成,我现在可以提取准确的数字。但是,由于业务场景,'DateIN'将在以后完成。如果预订没有完成,那么它会完全抛弃我的数字。

在这种情况下,默认情况下该字段为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

2 个答案:

答案 0 :(得分:0)

您可以在Date In字段上运行更新查询,并在“1970/1/1”时将其设置为null 即

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

我希望这有帮助..

答案 1 :(得分:0)

我设法解决了这个问题,这是我的一个新手错误:默认情况下,DateIn值应设置为null。业余我知道,但感谢Tejal和Symcbean的帮助。