2016-08-12 4 views
1

Ich habe einige Tabellen in SQL-Datenbank, eine davon enthält Namen von anderen, aber nicht alle. Ich muss Namen von Tabellen (von diesem speziellen) als eine Liste (xdocument) laden, und foreach und eine einfache Abfrage alles in eine XML-Datei konvertieren. Datenbank und App sind auf demselben azure-Konto.SQL-Tabellen zu XML

ich habe einige Tabelle, wie die

CREATE TABLE [dbo].[table_name] 
    (
     [P_ID] INT   NOT NULL, 
     [name] NVARCHAR (255) NOT NULL, 
     PRIMARY KEY CLUSTERED ([P_ID] ASC) 
    ); 

und eine mit nur varchar, die

enthält
table_name1 
table_name2 
table_name4 

i verwenden, die einfache Abfrage

SELECT 
    P_ID "Table_name2/@id", 
    nazwa "Table_name2" 
FROM Table_name2 
FOR XML PATH(''); 

und Ergebnis erhalten, aber nur für eine Tabelle

etwas , aber ich möchte ein Ergebnis für einige Tabellen in einer xml „file_converting_tables_to_xml.cs“ in meiner app

<spinery> 
<spiner title="Table_name1"> 
    <wart id="1">black</wart> 
</spiner> 
<spiner title="Table_name3"> 
    <wart id="1">white</wart> 
</spiner> 

oder etwas ähnliches

für mich alles, was ich gefunden über sie funktionieren nicht verwenden,

so bitte helfen

+2

Der "sql" -Tag ist nicht genug. Bitte bearbeiten Sie Ihre Frage, um das tatsächliche DBMS (Hersteller und Version) hinzuzufügen. Von der Syntax nehme ich an, es ist SQL Server? – Shnugo

+0

Fügen Sie DataTable (s) zu DataSet hinzu und verwenden Sie dann die DataSet WriteXml-Methode zum Speichern in einer Datei. – jdweng

+0

Ist diese Frage gelöst? Brauchen Sie weitere Hilfe? Bitte erlauben Sie mir einen Hinweis: Es wäre sehr nett von Ihnen, die Annahmeprüfung unter dem Stimmzähler der besten Antwort anzukreuzen. Dies wird 1) dieses Problem als gelöst markieren 2) es den Anhängern erleichtern, die beste Lösung zu finden 3) Punkte an den Beantworter zu zahlen und 4) Punkte an Sie zu zahlen. Sobald Sie die Grenze von 15 Punkten überschritten haben, werden Sie zusätzlich aufgefordert, über Beiträge zu stimmen. Dies ist der SO-Weg, um Danke zu sagen. Glückliche Kodierung! – Shnugo

Antwort

0

Wenn dieser SQL Server war Sie könnte dies versuchen:

--Creating tw o Tabellen

CREATE TABLE [dbo].Table_name1 
(
    [P_ID] INT   NOT NULL, 
    [name] NVARCHAR (255) NOT NULL, 
    PRIMARY KEY CLUSTERED ([P_ID] ASC) 
); 
CREATE TABLE [dbo].Table_name2 
(
    [P_ID] INT   NOT NULL, 
    [name] NVARCHAR (255) NOT NULL, 
    PRIMARY KEY CLUSTERED ([P_ID] ASC) 
); 
GO 

--Fill sie mit Ihren Beispieldaten

INSERT INTO dbo.Table_name1 VALUES(1,'black'); 
INSERT INTO dbo.Table_name2 VALUES(1,'white'); 
GO 

--use UNION ALL die Ergebnisse zu kombinieren und FOR XML PATH die richtigen Nennungen erstellen

SELECT 'Table_name1' AS [@title] 
     ,P_ID [wart/@id] 
     ,name [wart] 
FROM Table_name1 
UNION ALL 
SELECT 'Table_name2' AS [@title] 
     ,P_ID [wart/@id] 
     ,name [wart] 
FROM Table_name2 
FOR XML PATH('spiner'),ROOT('spinery'); 

--Clean- Up (Vorsicht wenn echte Daten!)

GO 
--DROP TABLE dbo.Table_name1; 
--DROP TABLE dbo.Table_name2; 
+0

Vielen Dank, aber es ist immer noch nicht das, was ich suche :) – JaNieWiem

+0

@JaNieWiem bitte genauer. Wonach suchen Sie? – Shnugo

+0

@JaNieWiem, ich lese gerade deine Frage noch einmal ... Wenn du Hilfe brauchst, musst du ein bisschen selbst investieren. Sie haben nicht einmal den richtigen Tag für Ihr DBMS hinzugefügt. Meine Antwort produziert ** genau ** die erwartete Ausgabe, wie Sie es geschrieben haben. Ohne deine Erklärung weiß niemand, wonach du suchst. – Shnugo