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 は在庫よりも多くの注文があったため表示されません。

「NOT EXISTS」ステートメントを何らかの方法で使用する必要があると考えています。

SQL ステートメントは何になりますか?

4

4 に答える 4

0

Instock > QtyOrdered の注文のみを選択します。このようなものがうまくいくはずです。

SELECT * FROM `table_name` 
WHERE InStock > QtyOrdered

編集:2つのテーブルの部分を逃しました、私は戻ってきます:)

于 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

クエリ:

SQLFIDDLE例

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

結果:

| ORDER |
---------
|     1 |
于 2013-05-23T22:53:08.683 に答える
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 に答える