1つのテーブルの自己結合後のレコードが特定の条件を持っていれば、2番目のテーブルに存在しないように2つのテーブルをスキャンするクエリを書く必要があります。自己結合と結合なし
参照が受信された場合、参照の組み合わせ(data1、data2、reference、identifier)に固有の制約を持つUniqueReferenceテーブルに挿入されます しかし、その注文は却下またはキャンセルされ、次の注文には同じ参照組み合わせ。私はまだそれを許可することを確認する必要があります。
Iは、テストデータについては、以下の例を与える:
UniqueReference Table
-------
sequence data1 data2 key reference identifier
1 XYZB ABCD 234 Reference1 ID2
2 XYZB DCBF 456 Reference2 ID2
3 XYZB null 678 Reference3 null
4 XYZB ABCD 980 Reference1 ID2
Order Table
--------
sequence key status
1 234 Created
2 456 Rejected
3 789 Processed
4 980 Cancelled
5 678 Processing
今は注文を受信したときに設定された2つのデータ上で(ID2、XYZB、ABCD、参照編)基準組合せで(SOキー980と言う)をシステムはそのステータスが拒否されていないキー(234)でこのような注文を受け取ったので、その注文を許可すべきではありません(重複しています)。しかし、組合せ(XYZB、DCBF、Reference2、ID2)で新しい注文を受け取った場合、システムでその注文を持っているがステータスが拒否されているため、この注文を許可する必要があります。
私は私はあなたが主にこの設定を自分で混乱していると思う
Select count(*) from Order o where o.status <> 'Rejected' and o.key in
(select <self-join> on reference combination on key for newly received order)
あなたはこれら4つのカラムにユニーク制約がある場合、あなたは* *重複する行を許可することはできません期待される出力を示し、また、あなたが – TheGameiswar
を使用しているDBMSにタグを付けてください。したがって、私はあなたの質問を理解していません。そのユニーク制約は最初のテーブルについてのみ知っていて、別のテーブルが何かが「拒否」されていると言っても気にしません。これを削除するか、一意制約に列を追加する必要があります。 –
混乱を避けるため、キーワードを識別子として使用しないようにしてください( 'order、key、sequence') – joop