这里有三个表
房屋表T_HOUSE:id,houseNo,housearea;
收费项目表T_CHARGE:id,chargeName,chargeMount;
房屋-收费项目表T_CHARGE_HOUSE:id,houseId,chargeId;
其中,房屋-收费项目表 把 房屋表 和 收费项目表 关联起来,它的houseId和chargeId分别是房屋表和收费项目表的主键,房屋表和收费项目表是一对多的关系,也就是说一个房屋可以有多个收费项目.我想写一条sql语句把每个房屋对应的收费项目显示出来,也就是说sql语句执行结果应该如下所示: 房屋编号 房屋位置 收费项目名称 房屋1 济南 收费项目1,收费项目2,收费项目3
房屋2 青岛 收费项目4,收费项目5,收费项目6请问用一条sql语句能实现上述显示结果吗?
如果不能的话那我应该怎么做?
我用的是struts和hibernate,数据库用的是oracle, 想在页面上按上述方式显示.
谢谢大家呀.
房屋表T_HOUSE:id,houseNo,housearea;
收费项目表T_CHARGE:id,chargeName,chargeMount;
房屋-收费项目表T_CHARGE_HOUSE:id,houseId,chargeId;
其中,房屋-收费项目表 把 房屋表 和 收费项目表 关联起来,它的houseId和chargeId分别是房屋表和收费项目表的主键,房屋表和收费项目表是一对多的关系,也就是说一个房屋可以有多个收费项目.我想写一条sql语句把每个房屋对应的收费项目显示出来,也就是说sql语句执行结果应该如下所示: 房屋编号 房屋位置 收费项目名称 房屋1 济南 收费项目1,收费项目2,收费项目3
房屋2 青岛 收费项目4,收费项目5,收费项目6请问用一条sql语句能实现上述显示结果吗?
如果不能的话那我应该怎么做?
我用的是struts和hibernate,数据库用的是oracle, 想在页面上按上述方式显示.
谢谢大家呀.
select a.houseNo 房屋编号 ,a.housearea 房屋位置 ,WMSYS.WM_CONCAT(b.chargeName) 收费项目名称
from T_HOUSE a,T_CHARGE b,T_CHARGE_HOUSE c
where a.houseNo=c.houseNo
and c.chargeId=b.id
group by a.houseNo,a.housearea
10G
同楼上解决
9i
http://cosio.itpub.net/post/10244/467060
以下,参考此贴,用SYS_CONNECT_BY_PATH来实现
http://topic.csdn.net/u/20080505/11/a0958b42-d938-465f-972a-0f61a2969c97.html?seed=491226048目前这样处理,收费项目里是乱序的,如果你想要按你的结果顺序显示
收费项目1,收费项目2,收费项目3
就需要至少两层SQL,里层先关联查询所有单子排序,外层再分组select houseNo 房屋编号 ,housearea 房屋位置 ,WMSYS.WM_CONCAT(b.chargeName) 收费项目名称
from (
select a.houseNo,a.housearea ,b.chargeName
T_HOUSE a,T_CHARGE b,T_CHARGE_HOUSE c
where a.houseNo=c.houseNo
and c.chargeId=b.id
order by 1,2,3)
group by houseNo,housearea