У меня есть 2 таблицы называются «Пользователь» и «UserDetail» в SQL Server 2008. Основная таблица «Пользователь» содержит следующие столбцыOPENXML с левым Регистрация
UserId Int,
UserDate DateTime,
ModifiedBy Int
В таблице «UserDetail» содержит следующие колонки
UserId Int
,UserIdDetailId Int
,Amount Int
,Balance Int
в таблице приведены данные пользователя следующим
UserId UserDate ModifiedBy
101 "01-Jan-2016" 100
102 "01-Feb-2016" 200
103 "01-Mar-2016" 300
в таблице UserDetail содержит данные как
UserId UserDetailId Amount Balance
101 1001 10 2
102 1002 20 4
Для третьей строки таблицы пользователя в таблице UserDetail нет дочерних записей.
Теперь я хочу, чтобы получить записи из оба пользователя и UserDetail таблицы с использованием зра
В переднем конце asp.net, я обрамляю XML и передать его в SQL зр.
<root>
<rec UserId="101" UserDate="8/22/2016 12:00:00 AM" ModifiedBy="8/22/2016 01:10:59 PM" userdetails="System.Collections.Generic.List`1[UserDetail]">
<userdetail userdetailid="1001" amount="10" balance="2" />
</rec>
<rec userid="102" userdate="8/22/2016 12:00:00 AM" modifiedby="8/22/2016 01:10:59 PM" userdetails="System.Collections.Generic.List`1[UserDetail]">
<userdetail userdetailid="1001" amount="1=20" balance="4" />
</rec>
<rec userid="103" userdate="8/22/2016 12:00:00 AM" modifiedby="8/22/2016 01:10:59 PM" userdetails="System.Collections.Generic.List`1[UserDetail]" />
OpenXML в SQL зр выглядит следующим образом
SELECT *
INTO #temp
FROM (
SELECT m.UserId,
m.UserDate,
m.ModifiedBy,
COALESCE(det.UserDetailId, -1) as UserDetailId
FROM OPENXML(@i, '/Root/Rec', 1) WITH (
,UserId INT '@UserId'
,UserDate DATETIME '@UserDate'
,ModifiedBy INT '@ModifiedBy'
) as m
LEFT JOIN (
SELECT UserId,
UserDetailId
FROM OPENXML(@i, '/Root/Rec/UserDetail', 1) WITH (
UserId INT '@UserId'
,UserIdDetailId INT '@UserIdDetailId'
,Amount INT '@Amount'
,Balance INT '@Balance'
)
) as det
ON m.UserId =det.UserId
) р
Я хочу, чтобы хранить в #temp таблице следующим образом
UserId UserDetailId UserDate ModifiedBy Amount Balance
101 1001 "01-Jan-2016" 100 10 2
102 1002 "01-Feb-2016" 200 20 4
103 1003 "01-Mar-2016" 300 NULL NULL
Я хочу получить 103 UserId al поэтому в этой таблице с NULL для детализации значений
Мой вопрос заключается в том, как OPENXML должна быть оформлена, чтобы получить все записи из пользователя и таблиц UserDetail с использованием соединений в OPENXML и я не устраивает OPENXML и его соединяет, но я как-то хотите, чтобы это выполнялось должным образом.
Теперь я получаю все NULL из таблицы подробностей –