2010-03-02 11 views
1

J'ai un problème avec l'utilisation de XML explicite dans SQL Server 2000 (donc je ne peux pas utiliser le nouveau chemin() trucs de sql 2005/8)sql server 2000 et xml explicite

Essentiellement, je ont deux tables et la structure XML que je veux avoir est

<xml> 
    <table_1 field1="foo" field2="foobar2" field3="foobar3"> 
     <a_row_from_table_2 field1="goo" field2="goobar2" field3="goobar3" /> 
     <a_row_from_table_2 field1="hoo" field2="hoobar2" field3="hoobar3" /> 
    </table_1> 
</xml> 

C'est, table_1 a un à plusieurs avec table_2, et je veux faire une hiérarchie de celui-ci.

semblent Jusqu'à présent, je ne peux pas pour l'obtenir, le plus proche que j'ai réussi à obtenir est tous les enregistrements de table1, avec tous les enregistrements de table2 annexés au dernier élément de table1

Toute aide avec la mise en place de ce type de relation serait grandement appréciée.

-Marcin

Répondre

0

Est-ce que votre requête comprend une clause order by? En mode for xml explicit, il est important que les informations apparaissent dans l'ordre dans lequel elles sont nécessaires. Par exemple, dans la base de données exemple Northwind, vous pouvez générer un XML imbriqué pour les territoires des employés comme:

select 
    1 as Tag, 
    Null as Parent, 
    e.EmployeeId as [Employee!1!EmployeeId], 
    e.LastName as [Employee!1!LastName], 
    Null as [EmployeeTerritories!2!TerritoryID] 
from dbo.Employees e 
union all 
select 2 as Tag, 
    1 as Parent, 
    et.EmployeeId as [Employee!1!EmployeeId], 
    Null as [Employee!1!LastName], 
    et.TerritoryId as [EmployeeTerritories!2!TerritoryID] 
from dbo.EmployeeTerritories et 
order by [Employee!1!EmployeeId], Parent 
for xml explicit 

Il en résulte un XML comme:

<Employee EmployeeId="1" LastName="Davolio"> 
    <EmployeeTerritories TerritoryID="06897" /> 
    <EmployeeTerritories TerritoryID="19713" /> 
</Employee> 
<Employee EmployeeId="2" LastName="Fuller"> 
... 

Pour avoir une idée de la façon dont cela fonctionne, Exécutez la requête sans le for xml explicit.