0

有如下三个表:

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"

我正在使用 Oracle 10G(即将移至 11G),java请不要,不要游标,不要临时表。

4

1 回答 1

1

WM_CONCAT如果 < 11g 或LIST_AGG或可能是XMLAGG

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 回答