TRANSACTIONS
という名前の3 つのテーブルがあるORDERS
とPAYMENTS
しますTRANSACTION_ID
。
これは、5 つの注文と 3 つの支払いがあるトランザクションに参加したときに得られる通常の出力です。
transaction_id, order_id, payment_id
----------
1, 20, 35
1, 20, 36
1, 20, 37
1, 21, 35
1, 21, 36
1, 21, 37
....
私が得るべきものは次のとおりです。
transaction_id, order_id, payment_id
----------
1, 20, 35
1, 21, 36
1, 22, 37
1, 23, null
1, 24, null
注文よりも多くの支払いがある場合はNULL
、order_id
列に表示されます。
基本的に、 /transaction_id
のカウントのより大きな数に等しい行数が必要です(この例では 5 > 3 なので 5)。orders
payments
これらの各テーブルには数百万のレコードがあることに注意してください。
編集:
コメントでのリクエストにより、上記のクエリは単純な結合です
SELECT t.transaction_id, o.order_id, p.payment_id
FROM TRANSACTION t
LEFT JOIN ORDERS o on o.transaction_id = t.transaction_id
LEFT JOIN PAYMENTS p on p.transaction_id = o.transaction_id
編集2:
完全なテーブル スキームを開示することはできません。クエリが機能するために必要な列のみを記述しました。実際には、これらのテーブルにはすべて 20 列以上あり、クエリは合計で約 20 列を返す必要があります。繰り返しになりますが、1 億TRANSACTIONS
件を超えるレコードがあり、両方ともORDERS
15万件以上PAYMENTS
のレコードがあり、そのうち約 10 万件のレコードを返す必要があります。