Я пытаюсь извлечь данные из XML (хранятся как NText) в таблице SQL.SQL Server Dynamic XQuery
Предположим, у нас есть две таблицы, каждая из которых с XML:
| TABLE 1 | | TABLE 2 |
|ID| NAME |FIELD_DEFINITION| |ID|DEF_ID|VALUES|
|1 |FIELD 1| <XML1> | |1 | 1 |<XML2>|
|---------------------------| |----------------|
И предположим, что строки 1 и 2 из XML1 выглядит так:
ROW 1
-----
<def>
<prop name="Property 1" pdid="1"/>
<prop name="Property 2" pdid="2"/>
</def>
ROW 2
-----
<def>
<prop name="Property 1" pdid="3"/>
<prop name="Property 2" pdid="4"/>
</def>
И xml2 выглядит так:
ROW 1
-----
<ps>
<p pdid="1" pvalue="Value 1"/>
<p pdid="2" pvalue="Value 2"/>
</ps>
ROW 2
-----
<ps>
<p pdid="3" pvalue="Value 3"/>
<p pdid="4" pvalue="Value 4"/>
</ps>
Я пытаюсь получить все значения для любых свойств с именем «Свойство 1», однако определение XML, которое обозначает, где значение хранится в таблице 1, а значения сохраняются в таблице 2.
Я получаю pdid поля Свойство 1 для каждой записи в таблице 1, например, так:
SELECT
t1.ID, t1.NAME,
CAST(t1.FIELD_DEFINITION AS XML).value('(/def/prop[@name = "Property 1"]/@pdid)[1]','varchar(10)') as FIELD_ID
FROM
[Table 1] t1
Но как Теперь я передаю это значение pdid в XQuery, чтобы вывести значение pvalue из Таблицы 2? Я надеялся, что смогу сделать выше, и присоединить таблицу 2 к таблице 1 на t1.ID = t2.DEF_ID
, а затем передать cp.FIELD_ID
в XQuery на t2.VALUES.value().
Возможно ли это? Или я использую неправильный подход здесь?