高级SQL查询帮助。需要将ruby脚本转换为SQL查询

时间:2012-02-03 00:15:14

标签: mysql

我对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文档,但我真的很难用这个语法。如果我能得到一些帮助,那就太棒了。

1 个答案:

答案 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);