我正在尝试从数据库中检索一些信息。
我有下表
orderNo item shipping
1050 1 0000-00-00
1050 2 0000-00-00
1050 6 2016-09-18
2000 2 0000-00-00
2006 1 2016-09-05
2006 2 0000-00-00
有些订单与多个商品配对。当项目为2时,我想自动添加发货日期(该功能正常)。但是,只有当所有其他项目都附加了日期时,才需要添加脚本。
例如: - >订单号'1050':第6项有一个日期,但第1项没有日期,所以我们不会将发货日期添加到2 - >订单号'2000':那里只有第2项,所以我们很高兴,将添加发货日期 - >订单号'2006':第1项有一个日期,所以我们也可以在第2项添加日期。
换句话说,当订单的商品不是2时,至少有一个其他配对商品没有发货日期,那么我想忽略它
//adding the shipping date to item 2
$sql = "UPDATE orders
SET shipping = '".$shipping."'
WHERE orderNo = '".$orderNo."' AND item = '2'";
Db::getInstance()->query($sql);
//add some kind of query to check whether shipping of rest items is not zero. If it is '0000-00-00' then do not proceed
SELECT orderNo FROM orders WHERE orderNo = '".$orderNo."' AND shipping in other items than 2 has a date
//If query returns true then proceed and execute the following
$new_payment = new itemPayment();
//else do nothing
所以在上面的查询中,我传递了订单号(例如'1050'),我想知道是否所有其他项目(除了2)都有发货日期。如果他们都进行了,如果没有那么就什么都不做。
我尝试了不同的查询,但没有任何效果。它可以只用mysql查询吗?还是需要一些PHP代码?
如果有什么可以帮助我,或者至少引导我走上正确的道路,我将非常感激。答案 0 :(得分:1)
这样的事可以帮到你:
$sql = "Select orderNo from orders where item != '2' AND shipping > '2000-01-01'";
替代:
$sql = "Select orderNo from orders where item != '2' AND shipping > '0'";
答案 1 :(得分:1)
执行此操作的可理解方法是查询:
SELECT orderNo FROM orders WHERE orderNo = '".$orderNo."' AND item !=2 AND shipping>'0000:00:00'
然后运行php num rows以查看与您的查询匹配的行数。如果结果大于0,则意味着您不应该继续