クライアント(Web取引)のビジネスロジックを実行しようとして問題が発生しています。
私のクライアントには、次のようなテーブル(簡略化)があります。
|| ID || OFFERED_PRODUCT_ID || DEMANDED_PRODUCT_ID ||
|| 01 || 34 || 45 ||
|| 01 || 34 || 16 ||
|| 01 || 45 || 57 ||
|| 01 || 47 || 57 ||
|| 01 || 57 || 63 ||
|| 01 || 16 || 20 ||
ここで、アプリは最大のトレードチェーンを表示する必要があります。トレードチェーンは、提供された製品と要求された製品内の関係として定義されます。
これはトレードチェーンです:
<34、45、57、63> <34、16、20> <45、57、63> <47、57、63> <57、63> <16、20>
私はこれを解決するためにC#を使用しようとしましたが、データの量を考えると不可能になりました。私の同僚は、再帰を使用することを勧めていると言いました。私は彼の意味を理解しようとしていますが、私はクライアント側の開発者であり、SQLの知識はあまりありません。
私はこれらをしました:
select o.OFFERED_PRODUCT_ID, o.DEMANDED_PRODUCT_ID
from TRADES o
start with
o.DEMANDED_PRODUCT_ID = (SELECT MIN(o.DEMANDED_PRODUCT_ID) from TRADES)
connect by NOCYCLE prior o.DEMANDED_PRODUCT_ID = o.OFFERED_PRODUCT_ID;
システム上で最も古い製品(最小識別子を使用)で再帰を開始しようとしています。しかし、それは機能しません。それは私にすべての貿易チェーンを与えました。一番大きいものが必要です。
出力例を次に示します。
OFFERED_PRODUCT_ID DEMANDED_PRODUCT_ID
9920896475501851 59587794888502550724
59587794888502550724 13197303523502765990
13197303523502765990 54010274740204405159
54010274740204405159 14505831337880766413
14505831337880766413 89607128670993987443
89607128670993987443 8802863939059413452
8802863939059413452 7779127922701247342
7779127922701247342 3810800421539873909
3810800421539873909 12423373218147473557