我对SQL很新,我必须将这个ruby脚本翻译成SQL,因为ruby脚本在服务器上运行太长时间了。这是ruby脚本:
orders = Order.find_all_by_state("in_progress"); nil
orders.each do |o|
if o.line_items.length == 0 and o.created_at > Time.parse("2011-12-14 00:00:00.000000 -08:00") and o.created_at < Time.parse("2011-12-21 00:00:00.000000 -08:00")
o.adjustments[0].destroy
o.shipment.destroy
o.turnaround_time.destroy
o.checkout.destroy
o.destroy
end; nil
end; nil
无论如何,协会如下:
订单有一个结账,发货,周转时间,许多line_items和许多调整(我想删除的订单只有1)。 我想删除所有没有订单项且在这些日期范围内(12月15日 - 20日)创建的订单。我还想删除与这些订单相关的所有对象(发货,周转时间,结账,调整)。我是SQL的新手,我完全不知道如何做到这一点。我一直在看SQL文档,但我真的很难用这个语法。如果我能得到一些帮助,那就太棒了。
答案 0 :(得分:0)
删除没有任何订单项的订单:
delete from order
where order_id not in (select order_id from line_item);
删除(现在)没有订单的关联对象:
delete from shipment
where order_id not in (select order_id from order);