我已经开了很长时间了,我不打算自己解决这个问题所以我希望我能在这里得到一些帮助,非常感谢。
我的问题如下:
我有这个简单的查询:
SELECT * FROM oc_order WHERE order_status_id = '0' ORDER BY order_id DESC
显示值为0的所有记录。这表示尚未完成的订单。
我真正想要的是在订单中email
否其他已完成订单的情况下未完成的订单
问题是在输出列表中有很多记录也有order_status_id = 1(订单已完成)。
我需要一个结合了order_status_id 0和1的查询,但是如果有一个记录具有相同的电子邮件地址(order_email)且order_status_id = 1,我不想显示它。
如果有效,我会有一份清单,其中包含所有未完成的订单,因此我可以通过折扣优惠券向客户发送电子邮件。
非常感谢你的帮助,我需要一些感激之情,我当然会很乐意这样做。
实际的数据库有点复杂,但在基础知识中,上述问题对我来说将是一个巨大的节省时间。
亲切的问候,
修正:
选择t1。*
来自oc_order t1
在t2.email = t1.email和t2.order_status_id ='3'左连接oc_order t2
其中t1.order_status_id ='0'
和t2.order_status_id为空
ORDER BY t1
。order_id
DESC
答案 0 :(得分:0)
以下是一种方法 - 内部查询为您提供了一个已完成= 1的电子邮件地址列表,该结果用于从外部结果排除这些电子邮件。 ..
SELECT * FROM mytable
WHERE email NOT IN (
SELECT DISTINCT email FROM mytable WHERE finished=1
)