2009-11-02 2 views
0

현재 비정규 화 된 데이터베이스가 있습니다. 즉XML AUTO는 내가하려는 일을 지원합니까?

Name|NameID|EmployeeID|EmployeeType 

나는 Employee 테이블이 아닌 이름 테이블에서 직원 ID를 해결하기 위해 데이터베이스를 정상화하고 있습니다.

이제
<Name Name='Fred' NameID='1' EmployeeID='1' EmployeeType='Manager'> 

내가 가진 내부가

SELECT Name, NameID, Name.EmployeeID, Employee.EmployeeType FROM Name 
INNER JOIN Employee ON Name.EmployeeID = Employee.EmployeeID 
FOR XML AUTO 

지금 내 XML은 다음과 같습니다 가입 :

그래서 우리는 출력이됩니다 순간

SELECT Name, NameID, EmployeeID, EmployeeType FROM Name 
FOR XML AUTO 

에서 선택이있다 :

<Name Name='Fred' NameID='1' EmployeeID='1'> 
    <Employee EmployeeType='Manager' /> 
</Name> 

내 질문에, 이전에 XML을 출력하도록 XML AUTO를 가져 오는 방법이 있습니까? 아니면 XML Explicit으로 이동해야합니까?

답변

1

FOR XML PATH 대신 사용할 수 있습니까 ?? XML의 레이아웃을보다 강력하게 제어 할 수 있으며, A LOT EASIER은 XML EXPLICIT보다 큽니다! :-)

SELECT 
    Name as '@Name', 
    NameID as '@NameID', 
    Name.EmployeeID as '@EmployeeID', 
    Employee.EmployeeType as '@EmployeeType' 
FROM Name 
INNER JOIN Employee ON Name.EmployeeID = Employee.EmployeeID 
FOR XML PATH('Name') 

PATH('Name')는 전체 요소, 당신을 <Name> 요소, 그리고 당신이 그때 당신은 최고의 않고 (특성을 얻을 것이다 @ 선도 "@"로 열의 별칭을 사용하는 경우 것이 정의 하위 요소를 얻는다).

What's new in SQL Server 2005 XML에 대한 MSDN 기사에서 자세한 내용과 예제를 확인하십시오.

마크 내가 할 수있는

+0

, 나는 프로와 나는 친절하게 내가 필요로하는 링크를 포함 할 수 귀하의 게시물을 업데이트 내 의견을 제출 한 것처럼 :-) XML 경로 – Gribbler

+0

대 노골적인 XML의 단점을 찾아 볼 필요가있을 것이다! – Gribbler

+0

단점 : EXPLICIT은 너무 복잡합니다. PROS : FOR XML PATH는 다음과 같은 것이 아닙니다 :-) 그게 전부입니다 :-) –

관련 문제