Question

Bonjour à partir d'un no0b SQL,
    J'ai trois déclarations de Select Je veux rejoindre:

Sélectionnez 2 est un FOR XML Sélectionnez auquel je veux ajouter 1 Sélectionne & 3 (qui affiche simplement le texte) comme une sorte d'en-tête / pied de page.

Les trois choisit le travail comme prévu et forment trois parties d'un .xml de podcast bien formé, mais je dois les mettre fin dans un résultat pour que je puisse éventuellement enregistrer dans un fichier .xml (qui sera mon prochain maux de tête , Je suppose).

Je l'ai essayé permutations de +, UNION et JOIN que mon esprit inexpérimenté peut trouver, mais en vain.

Sélectionner # 1 (simplement un texte)

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>'   

Sélectionner # 2 (mes données)

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

Sélectionner # 3 (plus de texte)

Select '</channel>
</rss>'

(J'utilise MS SQLSMS 2008.) (La nature complexe de la deuxième instruction select est due au fait qu'il est en train de récupérer des données à partir d'un DotNetNuke « Tableau / Formulaire et Liste de Défini par l'utilisateur » qui doit d'abord être « aplati ».)

Toute aide serait appréciée, Merci.

Était-ce utile?

La solution

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

Select @V1 = ...

Set @V2 = (Select ...)

Select @V3 = ...

Select @V1+@V2+@V3

Vous pouvez également jeter # 1 et # 3 à XML.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top