Laden...

Ausgabe zusammenführen

Erstellt von Anna85 vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.425 Views
A
Anna85 Themenstarter:in
59 Beiträge seit 2019
vor 4 Jahren
Ausgabe zusammenführen

verwendetes Datenbanksystem: <MSSQL>

Hallo, als Ergebnis für meine Abfrage (Auslesen XML Datei)bekomme ich folgendes:


010008        Betrieb        0005-9935
010008        Betrieb        0005-9935
010012        Produkt       0005-2891

Es gibt in XML Datei Datensätze die öfter als einmal in einem Datensatz vorkommen, s. oben.
deshalb bekomme ich zu einem Nummerid- 2 Datensätze.

Was kann ich machen, damit das Ergebnis so aussieht:


010008        Betrieb        0005-9935, 0005-9935
010012        Produkt       0005-2891

Ich habe recherchiert und habe die Fkt: concat_ws gefunden, aber irgendwie kann ich nicht einbauen:


Insert into tab
	(titel,
    verlag
  )

select
 data245.ref.value( marc21:subfield[@code = "a"][1]','nvarchar(255)') titel,
 data022.ref.value( marc21:subfield[@code = "a"][1]','nvarchar(255)') verlag
FROM (

Select tab1

FROM tabbuch

) xml
cross apply xml.xmlData.nodes(marc21:collection/marc21:record') as orga(ref)
cross apply orga.ref.nodes(marc21:datafield[@tag="245"]') data015(ref)
outer apply orga.ref.nodes(marc21:datafield[@tag="022"]') data022(ref)

Vielleicht kann jemand mir helfen? Danke!

Ich werde mich auch über einen Link sehr freuen.

A
Anna85 Themenstarter:in
59 Beiträge seit 2019
vor 4 Jahren

Danke, ich habe Lösung mit der Funktion STUFF gefunden!

Für meine neue Tabelle funktioniert einwand frei:


select ParkNr,
ergebnis=stuff(
        (select ',' + Nummer from tab1for xml path ('')), 1,1,''
            )
            from tab1 group by ParkNr


Viele Grüße

A
Anna85 Themenstarter:in
59 Beiträge seit 2019
vor 4 Jahren

Ich bekomme doch falsche Lösung.


Parknr          Thema         Nummer

010008        Betrieb        0005-9935, 0005-9932, 0005-2891

010012        Produkt       0005-9935, 0005-9932, 0005-2891

es soll so aussehen:


Parknr          Thema         Nummer

010008        Betrieb        0005-9935, 0005-9932

010012        Produkt       0005-2891

Mhh, was ist bei meine Abfrage falsch???

T
2.219 Beiträge seit 2008
vor 4 Jahren

Offensichtlich dein Sub Select, was dir alle Nummern aus tab1 liefert.

Hier kann ich nur Abts Antwort aus dem anderen Thread beipflichten, lies die Doku und arbeite dich in die Grundlagen ein, dann kannst du die Fehler selbst suchen und beheben.
Aktuell machst du für jedes Problem was du hast einen eigenen Thread auf ohne dich scheinbar mit den Grundlagen zu befassen.
Dies führt weder dich weiter, da du eben immer wieder auf Rückmeldungen von anderen angewiesen bist noch wollen hier Entwickler ihre Zeit mit Grundlagen für Lernunwillige vergeuden.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

A
Anna85 Themenstarter:in
59 Beiträge seit 2019
vor 4 Jahren

Ja manchmal möchte man schnelles Antwort haben.
Vielen Dank für eure Anmerkungen.
ich habe die Lösung:


select Parknr,  thema,
(select stuff((select ',' + Nummer
from tab1  t2 where t1.Parknr=t2.Parknr

for xml path('')),1,1,'')) as ergebnis

from tab1
group by Parknr,  thema


Ich weiß leider nicht, warum ich im Forum schreibe, wenn ich nur Kritik bekomme, weil ich Fragen stelle.
Ich bin kein Programmierer, deshalb frage ich bei Leuten, die Erfahrung haben und ja, es kann gut sein, dass meine Fragen total doof, einfach sind ... es kann gut sein. Aber deshalb muss man nicht jemanden beschimpfen.

Schönen Tag!

16.807 Beiträge seit 2008
vor 4 Jahren

Ich bin kein Programmierer, deshalb frage ich bei Leuten, die Erfahrung haben und ja, es kann gut sein, dass meine Fragen total doof, einfach sind ... es kann gut sein. Aber deshalb muss man nicht jemanden beschimpfen.

Weil Du es übertreibst. Wenn Deine Aufgaben einen Programmierer benötigen, dann hol Dir ein Programmierer ins Haus oder lerne es.
Das Forum ist nicht dazu da für Dich den kostenlosen Programmierer zu spielen. Du nutzt den Sinn aus.
Kritik ist aber keine Beschimpfung, auch wenn das Internet im Jahre 2019 bei jeglicher Antwort direkt übersennsibel ist.

Du kopierst irgendwas lustlos aus dem Internet, hast kein Bock (oder Zeit) irgendwas wirklich zu lernen oder selbst eine Initiative zu zeigen - ergo hat das Forum auch keine Lust sich von Dir ausnutzen zu lassen und Dir zu helfen.
90% Deiner Themen lassen sich mit 3 Minuten Google beantworten, aber die Lust (oder Zeit) selbst scheint bei Dir da nicht so hoch zu sein: das merken die Leute hier.

Das Forum ist eine Unterstützung bei konkreten Problemen, kein kostenloser Quellcode-Generator, weil Du keine Lust oder Zeit hast selbst was zu lernen.
Das kann man nicht oft genug sagen. Und wenn Du das weiterhin machst, dann schließen wir halt Deine Themen und verweisen Dich doch bitte Dir ein anderes Forum zu suchen.

T
2.219 Beiträge seit 2008
vor 4 Jahren

@Anna85
Auch wenn Abt dies wie gewöhnlich ziemlich direkt und unverblühmt sagt, was den Nagel auch auf den Kopf trifft, muss ich aber auch noch folgendes an dich richten.

Wenn du keine Kritik an deinem Vorgehen wünscht, bist du hier definitiv falsch.
Gerade um die Probleme zu lösen und auch zukünftig sogar zu verhindern, muss man sich mit der Kritik von erfahreneren Leuten auseinander setzen.

Wenn du dies machst, erkennst du auch, dass es nicht darum geht dich persönlich zu ärgern oder anzugreifen sondern dir die Möglichkeit zu bieten aus deinen eigenen Fehlern zu lernen um diese zukünftig zu vermeiden und/oder selbstständig zu lösen.

Mit deinem aktuellen Ansatz kannst du gerne weiter machen, was Abt und die anderen Mods aber irgendwann mit Thread Schließungen beenden werden.
In einem anderen Forum mag dies tolleriert werden, aber weiterhelfen tut dir dies auf lange Sicht genau 0, da du eben Lösungen für deine Probleme von anderen erwartest.

Falls du deine aktuellen Probleme auch im beruflichen Bereich liegen rate ich dir dringend dich mit dem Themen zu beschäftigen.
Ansonsten wirst du auf kurz oder lang sehr viele Probleme und Zeitdruck bekommen, wenn du von freiwilligen im Netz abhängig bist um solche teils trivialen Probleme zu lösen.

Investiere deine Zeit in die Themen, dann spart dies dir nicht nur Zeit sondern du bildest dich damit aktiv in deinem Bereich auch fort, was beruflich nie verkehrt sein kann.

Wie du aber hier weiter machen willst liegt nun allein an dir.
Die Konsequenzen daraus musst du dann aber auch selbst tragen.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.