2010-11-18 13 views
0

Привет из SQL nO0b,
У меня есть три Select заявления я хочу присоединиться:прилагая Текст для XML SQL Select Заявление

Select 2 является FOR XML Выберите, к которому я хочу добавить Выбирается 1 & 3 (который просто отображает некоторый текст) как своего рода верхний/нижний колонтитул.

Все три варианта работают по назначению и образуют три части хорошо сформированного podcast .xml, но мне нужно, чтобы они оказались в одном результате, поэтому я могу в конечном итоге сохранить его в .xml-файле (который будет моим следующим головная боль, я полагаю).

Я пробовал перестановки +, UNION и JOIN, что мой неопытный ум может придумать, но безрезультатно.

Выберите # 1 (просто какой-нибудь текст)

Select '<?xml version=''1.0''?> 
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"> 
    <channel> 
     <atom:link href="http://www.mysite.com/podcast/podcast.xml" rel="self" type="application/rss+xml" /> 
    <itunes:image href="http://www.mysite.com/Portals/0/Images/Audio/podcast_logo.jpg"/> 
    <link>http://www.mysite.com/Audio.aspx</link> 
<title>My Podcast</title> 
<description>My Podcast's Description</description> 
<language>en-us</language> 
<copyright>&#xA9; 2010</copyright> 
     <itunes:subtitle>Subtitle</itunes:subtitle> 
     <itunes:owner> 
     <itunes:name>Name</itunes:name> 
     <itunes:email>[email protected]</itunes:email> 
     </itunes:owner> 
     <itunes:category text="Religion &amp; Spirituality"> 
     <itunes:category text="Christianity" /> 
     </itunes:category> 
     <itunes:explicit>No</itunes:explicit> 
     <ttl> 120 </ttl>' 

Выбрать # 2 (мои данные)

Select 
(Select Cast(FieldValue as nvarchar(max)) from dbo.UserDefinedData where UserDefinedFieldId = 305 and UserDefinedRowId = item.UserDefinedRowId) as [title] 
,(Select 'Today''s Program is ' + Cast(FieldValue as nvarchar(max)) from dbo.UserDefinedData where UserDefinedFieldId = 305 and UserDefinedRowId = item.UserDefinedRowId) as [description] 
,(Select Cast(Cast(FieldValue as nvarchar(max)) as DateTime) from dbo.UserDefinedData where UserDefinedFieldId = 306 and UserDefinedRowId = item.UserDefinedRowId) as [pubdate] 
,(Select 'http://www.mysite.com/Portals/0/AudioFiles/RadioArchives/' + Cast(FieldValue as nvarchar(max)) from dbo.UserDefinedData where UserDefinedFieldId = 308 and UserDefinedRowId = item.UserDefinedRowId) as [guid] 
From 
dbo.UserDefinedRows item 
Where 
ModuleId = 820 
and UserDefinedRowID in (select UserDefinedRowID from UserDefinedData where UserDefinedFieldID = 306 and Cast(Cast(FieldValue as nvarchar(max)) as DateTime) between '2010-Nov-11' and '2010-Nov-18') 
Order By 
[pubdate] DESC 
for XML AUTO,ELEMENTS 

Выбрать # 3 (больше текста)

Select '</channel> 
</rss>' 

(Я использую MS SQLSMS 2008.) (Сложный характер второго оператора выбора связан с тем, что он извлекает данные из DotNetNuke «Пользовательская таблица/форма & Список», который должен быть сначала «сплющен», .)

Любая помощь будет оценена, спасибо.

ответ

1
Declare @V1 VarChar(Max), @V2 VarChar(Max), @V3 VarChar(Max) 

Select @V1 = ... 

Set @V2 = (Select ...) 

Select @V3 = ... 

Select @[email protected][email protected] 

В качестве альтернативы, лить №1 и №3 в XML.

+0

Это сделало. Вы избавили меня от многих разочарований. Благодаря! Я задал еще один вопрос относительно того, что выглядит моей последней проблемой с этим проектом (относительно DATETIME) здесь: http://stackoverflow.com/questions/4228335/displaying-a-cast-datetime-in-rfc822-format (Также , из любопытства, почему @ V2 использовал «Set» вместо «Select»?) – JDV

+0

Потому что, если я правильно помню, Select @ V2 = ... Для Xml Auto не работает. – Stu