realcoding
asked on
selecting XML from sql2005
CREATE TABLE [dbo].[Project](
[ProjectId] [int] NOT NULL,
[ProjectName] [nvarchar](255) ,
[ParentProjectId] [int] null,
[ReleaseId] [int]
)
insert into Project values (1, 'Project 1', null, 1)
insert into Project values (2, 'Project 2', null, 1)
insert into Project values (3, 'project 3', 1, 1)
insert into Project values (4, 'project 4', 2, 1)
CREATE TABLE [dbo].[Release](
[ReleaseId] [int] ,
[Name] [nvarchar](255) ,
[ReportingPriority] [int]
)
insert into Release values (1, 'march release', 1)
insert into Release values (2, 'may release', 2)
insert into Release values (3, 'june release', 3)
CREATE TABLE [dbo].[ReleaseSchedule](
[ReleaseScheduleID] [int] ,
[ReleaseID] [int],
[EndDate] [datetime]
)
insert into ReleaseSchedule values (1, 1, '3/1/2010' )
insert into ReleaseSchedule values (2, 2, '5/1/2010' )
insert into ReleaseSchedule values (3, 3, '6/1/2010' )
this is the SQL data i have. from this i need to get a hierarchical XML that resembles this:
<Release Heading="releaseName" id="releaseID" EndDate="date">
<Project Heading="projName" id="projectID">
<SubProject Heading="subprojName" id="projectID"/>
<SubProject Heading="subprojName" id="projectID"/>
</Project>
<Project Heading="releaseName" id="projectID">
<SubProject Heading="subprojName" id="projectID"/>
</Project>
</Release>
basically the logic is that each release has some projects to it, and projects can be nested with sub-projects (from the project table's self referencing data)
ASKER
yes, close but the code has the same problem the code i just made... there are dups all over !!!
i get many dups on release, project and sub-project nodes.
here is the code i have that produces similar results to the sample above (both have dup data all over in the xml)
i get many dups on release, project and sub-project nodes.
here is the code i have that produces similar results to the sample above (both have dup data all over in the xml)
SELECT
r.NAME AS '@Heading',
r.ReleaseId AS '@id',
rs.EndDate AS '@EndDate',
(SELECT
p.ProjectName AS '@Heading',
p.ProjectId AS '@id',
(SELECT
p2.ProjectName AS '@Heading',
p2.ProjectId AS '@id'
FROM dbo.Project p2
WHERE p2.ParentProjectId = p.projectId
ORDER BY p2.ProjectName
FOR XML PATH('SubProject'), TYPE
)
FROM dbo.Project p
WHERE p.ReleaseId = r.ReleaseId and p.ParentProjectId is null
ORDER BY p.ProjectName
FOR XML PATH('Project'), TYPE
)
FROM dbo.Release r
INNER JOIN dbo.ReleaseSchedule rs ON r.ReleaseId = rs.ReleaseID
order by r.ReportingPriority
FOR XML PATH('Release'), ROOT('data')
ASKER CERTIFIED SOLUTION
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
ASKER
great, sorry i needed a where clause and fixed everything cause my actual data is more complex than the sample.
Open in new window