好的,我试着四处寻找,但是无法想出什么查询,所以我想我会发一个问题。如何在不将主数据与每行详细数据重复的情况下撤回主/详细信息?
鉴于以下情况:
Master - Cars
=============
decimal car_id (pk)
string name
decimal cost
decimal doors
Child - Colors
=============
decimal color_id (pk)
decimal car_id (fk)
string color
所以,鉴于以上数据,如果我有一辆红色,绿色和蓝色(我不做香槟),我通常做的事情,我的记录集中有3行回来。
是否有将所有“颜色”连接到一个字段中,或作为数组返回?那样我每辆车可以有1排?
答案 0 :(得分:1)
这听起来像SQL joining question(我回答过一个问题。得到了一个很好的答案)
答案 1 :(得分:0)
在我看来,你的COLORS表试图成为一个参考和交叉表,但如果你有这样的话,那么:
select car_id, ltrim(sys_connect_by_path(color,','),',') colors
from
(select car_id, color, row_number() over (partition by car_id order by color) rn
from colors
) rn
where connect_by_isleaf=1
connect by prior rn+1=rn and prior car_id = car_id
start with rn=1
;
应该有效