SDirk 10 Geschrieben 9. Juni 2011 Melden Teilen Geschrieben 9. Juni 2011 Hallo zusammen, mich würde mal interessieren ob es eine elegantere Lösung für mein Problem gibt: Ich hole mit einer SQL Abfrage eine Liste an Prospekte aus der DB, muss nun in einer zusätzlichen Spalte alle verfügbaren Sprachen des Prospektes darstellen. Momentan hole ich mir die kompletten Datensätze aus der DB wo ich denke dass das unnötig ist... Versuche mit Subselects sind natürlich gescheitert weil das ergebnis mehrere zeilen liefert. Über ne bessere Methode wäre ich dankbar denn die Seite sollte perfomant sein da wir mit großen Datenmengen konfrontiert sind. Grüße Dirk Zitieren Link zu diesem Kommentar
SDirk 10 Geschrieben 9. Juni 2011 Autor Melden Teilen Geschrieben 9. Juni 2011 HEUREKA ich habe die perfekte, elegante Lösung gefunden, das FOR XML PATH kommt auch darin vor was das allerdings bewirkt werde ich gleich noch nachlesen. Gefunden habe ich die Lösung über die MySQL Funktion GROUP_CONCAT(T.Tag SEPARATOR ', ') AS Tags da aber T-SQL diese Funktion nicht kennt habe ich nach einem equivalent gesucht und mit STUFF auch gefunden. Mein SQL (mal ein Test) sieht jetzt so aus: select distinct A.pb1iname, A.pb1thumb, Sprachen=STUFF((SELECT distinct ','+pb1sprachKZ FROM tblPBserviceproduct WHERE pb1thumb=A.pb1thumb FOR XML PATH('')) , 1 , 1 , '' ) from tblPBserviceproduct A where A.pb1iname = 'FL 0020' Das Ergebnis ist schlichtweg beeindrucken und exakt das nachdem ich gesucht habe und anstatt mit allen Datensätzen in allen Sprachen zu hantieren kann ich meine gewohnt schnelle Abfrage weiter benutzen. Das Ergebnis sieht so aus: FL 0020 pg_fl_0020_de_cover.jpg D,E,ES,F,RU Perfekt! Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.