Frage

Hallo aus einem SQL-No0b,
    Ich habe drei Select Aussagen I anschließen möchten:

Select 2 ist ein FOR XML Wählen Sie, auf die ich möchte anfügen Selects 1 & 3 (die einfach einen Text anzuzeigen) als eine Art von Kopf- / Fußzeilen.

Alle drei Selects wie vorgesehen und drei Teile einer Barnett gebildet Podcast .xml bilden, aber ich brauche sie in einem Ergebnis am Ende so kann ich schließlich speichert es in eine XML-Datei (die werden meine nächsten Kopfschmerzen , Schätze ich).

Ich habe Permutationen von + versucht, UNION und JOIN, dass mein unerfahrenen Geist kann kommen, aber ohne Erfolg.

Wählen Sie # 1 (einfach etwas Text)

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>user@domain.com</itunes:email>
      </itunes:owner>
      <itunes:category text="Religion &amp; Spirituality">
        <itunes:category text="Christianity" />
      </itunes:category>
      <itunes:explicit>No</itunes:explicit>
      <ttl> 120 </ttl>'   

Wählen Sie # 2 (meine Daten)

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

Wählen Sie # 3 (mehr Text)

Select '</channel>
</rss>'

(Ich benutze MS SQLSMS 2008) (Die komplexe Natur der zweiten select-Anweisung ist aufgrund der Tatsache, dass sie Daten von einer DotNetNuke „Benutzerdefinierte Tabellen / Form & List“ Abrufen der zuerst sein muss „abgeflacht“.)

Jede Hilfe würde geschätzt, Danke.

War es hilfreich?

Lösung

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

Select @V1 = ...

Set @V2 = (Select ...)

Select @V3 = ...

Select @V1+@V2+@V3

Alternativ gegossen # 1 und # 3 zu XML.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top