SQL Server 2005 - TSQL pour la requête XML pour obtenir des départements et des employés groupés

StackOverflow https://stackoverflow.com/questions/8910082

Question

Pour une base de données contenant 3 tables:

  1. Compagnie
  2. département
  3. Employee-partage

Je voudrais un XML comme ci-dessous:

<Companies>
  <Company>
    <CompanyName></CompanyName>
    <CompanyId></CompanyId>
    <..></..>
    <Departments>
       <Name></Name>
       <..></..>
       <Employees>
          <Employee>
             <FirstName></FirstName>
             <LastName></LastName>
             .. .. ..
          </Employee>
          .. .. ..
       </Employees>
    </Departments>
    .. .. ..
  </Company>
  .. .. .. 
</Companies>

Lorsque l'entreprise se répète (étiquettes), les départements de la société se répètent (étiquettes) et les employés à l'intérieur des départements se répètent (étiquettes) en répétant, je veux dire qu'il y a plus d'un nombre de ces éléments et non des données.

Rapports

  1. Company et Department sont liés à travers FK dans Department table qui relie à CompanyId dans Company table.

  2. Department et EmployeeInDepartment sont liés par «fk» dans EmployeeInDepartment table qui relie à DepartmentId dans Department table.

Requête:

Exécutez la base de données ci-dessous sur les pubs et vérifiez le XML, il aura plus d'un travail avec ID 10

select jobs.job_id 'JobId',
job_desc 'Desc',
(
    select emp_id 'EmployeeId',fname 'FirstName',lname 'LastName' from employee where job_id = jobs.job_id for xml path('Emploees'),type
)
from jobs
inner join 
employee on  jobs.job_id = employee.job_id
for xml path('employees')

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top