我有2个表: ORDER_INFO_TABLE 和 APPROVE_TABLE
第一个包含与“订单”相关的信息。请注意,单个订单可能包含不同的“订单行”(这就是为什么您会在图像中看到重复的订单号的原因)下面)。此外,还有一个名为“ PRICE”(在我的图片中未显示此字段)和“已取消”(订单行状态)的字段
第二个表包含与不同订单行的“批准人”相关的信息。在此表的内部,您将看到一个名为“ APPROVERID”,ITEMID(订单行ID)和“ APPROVED”(订单行状态)的字段。批准者必须检查价格是否还可以。如果订单行正常,则批准者将在“ APPROVED”字段中输入数字1。如果价格不正确,他将在另一个表的CANCELED字段中输入数字1。
看看这些图像:
我尝试未成功获取特定批准者的所有已取消订单(取消了所有ITS订单行时取消了订单)和批准的订单(批准的订单可能包含取消的订单行)
我尝试了很多次,使用count运算符,左联接,但是我完全迷失了:(
能请你帮我吗?
谢谢!
答案 0 :(得分:-1)
我猜想此练习是要使您熟悉HAVING
子句。
SELECT web_order_id
FROM ORDER_INFO_TABLE oif
INNER JOIN APPROVE_TABLE apt
ON (oif.item_id = apt.item_id) /* I prefer "USING" if DB allows */
GROUP BY web_order_id
HAVING SUM(cancelled) = COUNT(*);