SQL查询(遇险情况)

时间:2019-05-15 23:27:29

标签: sql

我有2个表: ORDER_INFO_TABLE APPROVE_TABLE

第一个包含与“订单”相关的信息。请注意,单个订单可能包含不同的“订单行”(这就是为什么您会在图像中看到重复的订单号的原因)下面)。此外,还有一个名为“ PRICE”(在我的图片中未显示此字段)和“已取消”(订单行状态)的字段

第二个表包含与不同订单行的“批准人”相关的信息。在此表的内部,您将看到一个名为“ APPROVERID”,ITEMID(订单行ID)和“ APPROVED”(订单行状态)的字段。批准者必须检查价格是否还可以。如果订单行正常,则批准者将在“ APPROVED”字段中输入数字1。如果价格不正确,他将在另一个表的CANCELED字段中输入数字1。

看看这些图像:

image

image2

我尝试未成功获取特定批准者的所有已取消订单(取消了所有ITS订单行时取消了订单)和批准的订单(批准的订单可能包含取消的订单行)

我尝试了很多次,使用count运算符,左联接,但是我完全迷失了:(

能请你帮我吗?

谢谢!

1 个答案:

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