我的数据库'fare'中有一张表。它有列vehicle_number,date_from,date_to和票价。 在date_from到date_to中定义的日期范围有几个车辆编号,以及在该特定期间的票价 日期范围。
vehicle_number date_from date_to fare
ABC123 2013-04-19 2013-04-24 $50
ABC123 2013-04-25 2013-04-29 $100
ABC123 2013-04-25 2013-04-29 $120
ABC124 2013-04-19 2013-04-21 $20
我想运行一个查询,假设在哪里
vehicle_number - > ABC123
DATE 2013-04-20 fare as -->NULL
因此该表可以显示为
vehicle_number date_from date_to fare
ABC123 2013-04-19 2013-04-19 $50
ABC123 2013-04-21 2013-04-24 $50
ABC123 2013-04-25 2013-04-29 $100
ABC123 2013-04-25 2013-04-29 $120
ABC124 2013-04-19 2013-04-21 $20
我尝试了INSERT查询并在该日期插入NULL,它被插入NULL但没有获得所需的输出。 此外,DELETE正在从DB中删除整行。
查询最初插入日期和票价:
INSERT INTO fare (`vehicle_number`,`date_from`, `date_to`,`fares`) VALUES ('$vehicle_number','$from','$to','$vehicle_fares')
尝试将此查询设为NULL
INSERT INTO fare (`vehicle_number`,`date_from`, `date_to`,`fares`) VALUES ('ABC123','2013-04-20','2013-04-20',NULL)
之后显示以下输出:
vehicle_number date_from date_to fare
ABC123 2013-04-19 2013-04-24 $50
ABC123 2013-04-20 2013-04-20
ABC123 2013-04-25 2013-04-29 $100
ABC123 2013-04-25 2013-04-29 $120
ABC124 2013-04-19 2013-04-21 $20
答案 0 :(得分:0)
听起来你正试图只显示不是4-20的日期。这不是插入新记录的适当上下文。相反,您应该修改查询以在返回的结果中简单地排除此日期:
SELECT * FROM fare WHERE vehicle_number = ABC123 AND date_from <> 2013-04-20 AND date_to <> 2013-04-20