SQL Server 2005 - TSQL para la consulta XML para obtener departamentos y empleados agrupados

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

Pregunta

Para una base de datos que contiene 3 tablas:

  1. Compañía
  2. Departamento
  3. Información de Empleados

Me gustaría un XML como a continuación:

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

Cuando la empresa repite (etiquetas), los departamentos dentro de la compañía están repitiendo (etiquetas) y los empleados dentro de los departamentos repiten (etiquetas) repitiendo, quiero decir que hay más de un número de estos elementos y no los datos.

Relaciones

  1. Company y Department están relacionados a través de FK en Department tabla que vincula a CompanyId en Company mesa.

  2. Department y EmployeeInDepartment están relacionados a través de 'fk' en EmployeeInDepartment tabla que vincula a DepartmentId en Department mesa.

Consulta:

Ejecute lo siguiente en la base de datos de pubs y verifique el XML, tendrá más de un trabajo con 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')

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top