![]() |
Datenbank: Absolute Database • Version: 7.1 • Zugriff über: Local ADS
SQL-ADS : Ergebnis mehrerer Zeilen in 1 Zeile zusammenfassen
Hallo zusammen,
ich versuche seit ein paar Tagen herauszufinden, ob es in SQL die Möglichkeit gibt, den Inhalt bestimmter Zeilen zu einer Zeile zusammenzufassen. :? Hier mal genauer: So sieht quasi mein Query-Result aus: Stichwort | BildID =================== Stichwort1 | Bild 1 Stichwort2 | Bild 1 Stichwort3 | Bild 1 Stichwort2 | Bild 2 Stichwort4 | Bild 2 In dem Beispiel zeigt die Query, welches Bild welche Stichwörter zugewiesen bekommen hat. Soweit so gut. Aber wenn ich diese Stichwöter nun möglichst schnell anzeigen lassen will, müsste ich jede Zeile durchgehen und herausfinden, welches Stichwort zu welchem Bild gehört. Mit GROUP oder DISTINCT kann ich zwar doppelte Einträge herausnehmen, aber ich suche eine Möglichkeit, automatisch den Inhalt der Spalte "Stichwort" in die per GROUP oder DISTINCT reduzierte Zeile einzulesen (separiert dann z.B. durch ein Komma) Also etwa so: SELECT *, GesuchteFunktion(Stichwort) FROM Query GROUP BY BildID Ergebnis sollte dann so aussehen: Stichwort | BildID =================== Stichwort1, Stichwort2, Stichwort3 | Bild 1 Stichwort2, Stichwort4 | Bild 2 Gibt es eine solche Funktion im ADS? Leider finde ich nichts in der Hilfe, auch weil ich nicht richtig weiß, unter welchem Oberbegriff ich das Ganze suchen soll. Wäre toll, wenn jemand eine solche Funktion kennt (oder natürlich eine andere Möglichkeit) Gruß Pfoto |
Re: SQL-ADS : Ergebnis mehrerer Zeilen in 1 Zeile zusammenfa
Hallo,
dass was du vorhast möchte ich auch schon lange haben. In SQL gibt es keinen Befehl, der sowas kann. Ich kenne Absolute Database nicht, ich arbeite mit MSSQL2000. Dort kann man endlich benutzdefinierte Funktionen schreiben, die wie du das möchtest in einem SQL-Statement eingebaut werden können und die dann für jede Zeile aufgerufen werden. Wenn ich sowas mache, dann möchte ich natürlich eine ordentlich Lösung haben. Eine zufriedenstellende Möglichkeit währe allerdings nur dann vorhanden, wenn man das SQL-Statement, dass den Inhalt der Ergebniszeile liefert, als Parameter übergeben könnte. Da liegt dann leider auch das Problem bei MSSQL, in benutzerdefinierten Funktionen gibt es nämlich keine temporären Tabellen. Deshalb gibt es aus meiner Sicht bis jetzt (bei MSSQL) nur die Möglichkeit, immer eine spezielle Funktionen zuschreiben, bei der das SQL-Statement fest ist. Also, ich lasse mich sehr gern eines besseren belehren. Aber ich bin der Meinung, das es leider nicht geht, was du da vorhast. MfG Thorsten |
Re: SQL-ADS : Ergebnis mehrerer Zeilen in 1 Zeile zusammenfa
Das dürfte nur mit einer DB-Function (ähnlich wie eine SP) gehen, die dir das gesammelte Ergebnis zurück gibt. Habe ich auch schon gemacht. Allerdings muss die DB das unterstützen.
|
Re: SQL-ADS : Ergebnis mehrerer Zeilen in 1 Zeile zusammenfa
Hallo Pfoto,
der SQL Standard sieht eine solche Funktion nicht vor. MySQL bietet dir zu diesem Zweck die Aggregat-Funktion GROUP_CONCAT an. ADS zielt ohne SP und UDF wohl mehr auf Kunden, die einen Ersatz für die BDE suchen. Wenn Denormalisierung eine wichtige Anforderung von dir ist, dann musst du dich bei NF2-Datenbanken umschauen. Grüße vom marabu |
Re: SQL-ADS : Ergebnis mehrerer Zeilen in 1 Zeile zusammenfa
Zitat:
Aber wie schon geschrieben: In ANSI-SQL ist dafür nichts vorgesehen, aber mit einem SQL Script ist das ganze recht einfach lösbar. |
Re: SQL-ADS : Ergebnis mehrerer Zeilen in 1 Zeile zusammenfa
Zitat:
|
Re: SQL-ADS : Ergebnis mehrerer Zeilen in 1 Zeile zusammenfa
Zitat:
|
Re: SQL-ADS : Ergebnis mehrerer Zeilen in 1 Zeile zusammenfa
Missverständnisse über Missverständnisse...
Zitat:
Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz