this xml
<roomtypes> <roomtype id="1" total="5"> <roomfacilities> <fid>101</fid> <fid>103</fid> <fid>105</fid> </roomfacilities> </roomtype> <roomtype id="2" total="4"> <roomfacilities> <fid>108</fid> <fid>109</fid> <fid>110</fid> </roomfacilities> </roomtype> </roomtypes>
i need make xquery display result this
int int xml 1 5 <fid>101</fid><fid>103</fid><fid>105</fid> 2 4 <fid>108</fid><fid>109</fid><fid>110</fid>
i have reached here..
int int xml 1 5 <fid>101</fid><fid>103</fid><fid>105</fid> 2 4 <fid>101</fid><fid>103</fid><fid>105</fid>
using this
declare @xmldocument xml; set @xmldocument =( select roomtypes hotels); declare @tb table(id int, total int, fid xml); declare @id int; set @id=0; insert @tb (id, total,fid) select p.value('../@id', 'int'), p.value('../@total', 'int'), p.query('//roomtype[@id=1]/roomfacilities/fid') @xmldocument.nodes('roomtypes/roomtype/roomfacilities') n(p) select * @tb;
since have hardcoded @id=1 showing result of first element only.
any appreciated...
select p.value('../@id', 'int'), p.value('../@total', 'int'), p.query('fid') @xmldocument.nodes('roomtypes/roomtype/roomfacilities') n(p)
Comments
Post a Comment