0

我有一个包含订单的表格,以及另一个包含所有订单上的每个行项目的表格:

SALES                ITEMSALELINES
Order |              Order | Line | QtyOrdered | InStock
1     |              1     | 1    | 1          | 5
2     |              1     | 2    | 1          | 2
                     2     | 1    | 1          | 5
                     2     | 2    | 3          | 2

我需要显示我的所有订单的列表,这些订单在每个订单项上都有足够的库存。例如,订单 1 会列出,因为我们有足够的库存,但订单 2 不会,因为第二行的订单比我们的库存多。

我想我需要以某种方式使用“不存在”语句。

SQL 语句是什么?

4

4 回答 4

0

Query:

SQLFIDDLEExample

SELECT s.`Order`
FROM `SALES` s
WHERE NOT EXISTS (SELECT 0
                  FROM `ITEMSALELINES` sl
                  WHERE sl.`QtyOrdered` > sl.`InStock`
                  AND sl.`Order` = s.`Order`)

Result:

| ORDER |
---------
|     1 |
于 2013-05-23T22:53:08.683 回答
0

仅选择 Instock > QtyOrdered 的订单。像这样的东西应该工作。

SELECT * FROM `table_name` 
WHERE InStock > QtyOrdered

编辑:错过了两个表部分,我会回来的:)

于 2013-05-23T22:39:55.647 回答
0

通过使用NOT IN

SELECT *
FROM   `SALES`
WHERE  `Order` 
NOT IN(
    SELECT `Order`
    FROM   `ITEMSALELINES`
    WHERE  `QtyOrdered` > `InStock`
)
于 2013-05-23T22:40:34.650 回答
0

不记得是否所有口味都支持 NOT IN,我知道 SQL Server 和 Oracle 支持。

SELECT Order
FROM  Sales
WHERE Order NOT IN (SELECT Order
                    FROM ITEMSALELINES
                    WHERE QtyOrdered > InStock)
于 2013-05-23T22:42:35.067 回答