DB2、OR、OSに2台の車両テーブルがあります。また、お届け予定の車両の注文があり、OSは既にその車ですORテーブルのすべての注文を参照したいが、OSテーブルで取り消された注文ではなく、ステータス( '8')で取り消されたものを特定して、このクエリを試したが、 OSテーブル内のものだけです。すべてのオーダーがOSテーブルにあるわけではありませんが、OUTER JOINを試しましたが、期待した結果ではありません。DB2 Query Join
SELECT OR.OBNO, OR.ORSC, OS.SCLD
FROM
TABLE.OR LEFT OUTER JOIN TABLE.OS ON OR.OBNO=OS.OBNO
WHERE OS.SLCD NOT IN ('8')
これが唯一の(ORテーブルはSLCDのステータスを持っていない、私は8つのステータスを持つすべての注文を除外したいOSテーブルで私にすべての注文を取得し、ORテーブルでものを除きます。 OSテーブルではなく、OSテーブルにないものを保持する)。
これは同じ結果です。
SELECT OR.OBNO, OR.ORSC, OS.SCLD
FROM
TABLE.OR LEFT OUTER JOIN TABLE.OS ON OR.OBNO=OS.OBNO AND OS.SLCD NOT IN ('8')
誰かが私を助けてくれることを願っています。おかげでたくさん
あなたの2回目の試行が間違っていると同じ結果を配信しません。最初は私のために良い見えますが、私はあなたがそれが間違っていると思うものを完全に理解することはできません。左結合のため、左テーブルのすべての行が返されます。これはORですが、 "OSテーブルのすべての注文"を書いたものです。 – MichaelTiefenbacher
はい、私は左外部結合がORテーブルのすべての行を返すと思っていましたが、このケースではSLCDステータスのOSテーブル内にある注文だけを返します、私はあまりにも私が問題を抱えているときにNOT IN条件を指定すると、OR表がOR表内にある注文を戻していません。私はあなたのおかげで感謝します。 –