Bonjour à partir d'un no0b SQL,
J'ai trois Select
déclarations que je veux rejoindre:ajouter du texte à FOR XML SQL Select Déclaration
Select 2 est un FOR XML
Sélectionnez auquel je veux ajouter choisit 1 & 3 (qui affiche simplement du texte) comme une sorte d'en-tête/pied de page. Les trois sélections fonctionnent comme prévu et forment trois parties d'un podcast joliment formé .xml, mais j'en ai besoin pour finir dans un résultat afin de pouvoir éventuellement l'enregistrer dans un fichier .xml (qui sera mon prochain). mal de tête, je suppose).
J'ai essayé des permutations de +
, UNION
, et JOIN
que mon esprit inexpérimenté peut trouver, mais en vain.
Select # 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>© 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 & Spirituality">
<itunes:category text="Christianity" />
</itunes:category>
<itunes:explicit>No</itunes:explicit>
<ttl> 120 </ttl>'
Sélectionnez # 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électionnez # 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'elle récupère des données à partir d'une "liste définie par l'utilisateur/formulaire & List" de DotNetNuke qui doit d'abord être "aplatie" .)
Toute aide serait appréciée, merci.
C'est ce qu'il a fait. Vous m'avez sauvé de nombreuses heures de frustration. Merci! J'ai posté une autre question concernant ce qui semble être mon dernier problème avec ce projet (concernant DATETIME) ici: http://stackoverflow.com/questions/4228335/displaying-a-cast-datetime-in-rfc822-format (Aussi , par curiosité, pourquoi @ V2 a-t-il utilisé "Set" au lieu de "Select"?) – JDV
Parce que si je me souviens bien, Select @ V2 = ... Pour Xml Auto ne fonctionne pas. – Stu