0

次のように3つのテーブルがあります。

Client (Client_Id)
Order (Order_Id, Client_Id)
OrderItem (OrderItem_Id, Order_Id)

ClientIdクライアントによって作成されたすべてのOrderItem_Id(文字列にシリアル化された)のコンマ区切りリストとともに'のリストを取得するにはどうすればよいですか?

クライアントは複数の注文を行うことはできません。

次に例を示します。

入力:

Client: 100
Order: 50, 100
OrderItem: [{1, 50}, {2, 50}, {3, 50}]

期待される結果:100, "1,2,3"

私はOracle10G(まもなく11Gに移行)を使用しています。いいえjava、カーソルはありません。一時テーブルはありません。

4

1 に答える 1

1

<11gまたはLIST_AGGまたは場合によってはXMLAGGの場合はWM_CONCAT

Select client_ID, List_Agg(OrderItem_ID, ', ')
from ORDER O
INNER JOIN ORDERITEM OI on OI.Order_ID = O.Order_ID

また

Select client_ID, wm_concat(OrderItem_ID)
from ORDER O
INNER JOIN ORDERITEM OI on OI.Order_ID = O.Order_ID

注:WM_CONCATは文書化されていない関数であり、自己責任で使用してください。非常に便利ですが。

于 2013-02-04T23:43:02.557 に答える