Access: Abfrage ~ GROUP CONCAT
Rouven
- datenbank
Hello,
ich kämpfe gerade mit einer relativ dynamischen Datenstruktur in MS-Access und suche nun so etwas wie das GROUP_CONCAT von MySQL. Ich vermute eine Kreuztabellen-Abfrage ist etwas das ich suche, aber bin mir nicht ganz sicher.
Ausgangslage:
id_datensatz typ wert
1 x a
1 y b
1 z c
2 x d
2 z e
2 z f
-> Also eine Liste, bei der zu einem Datensatz verschiedene typ+wert-Paare zugeordnet sind. Zu beachten dabei:
Was ich optimalerweise suche wäre eine Liste
1 x:a y:b z:c
2 x:d z:e z:f
Womit ich leben könnte wäre
satz x y z z
1 a b c
2 d e f
Aus praktischen Gründen kann davon ausgegangen werden, dass die Anzahl der insgesamt zu einem Datensatz gegebenen Werte 25 nicht übersteigen wird.
Gibt es Vorschläge, wie diese Liste erzeugt werden kann?
Danke im Voraus!
MfG
Rouven
yo Rouven,
access ist nicht ganz meine welt, aber was spricht den dagegen, dir eine spezielle funktion zu schreiben, die als eingabeparameter die id einer bestimmten tabelle hat und dann alle datensätze der id selektiert und innerhalb einer schleife einen string in gewünschter form zusammen setzt und diesen string dann als <einen> wert zurück liefert ?
ps: group_contact sollte es für jedes rdbms geben...
Ilja
Hello,
access ist nicht ganz meine welt, aber was spricht den dagegen, dir eine spezielle funktion zu schreiben, die als eingabeparameter die id einer bestimmten tabelle hat und dann alle datensätze der id selektiert und innerhalb einer schleife einen string in gewünschter form zusammen setzt und diesen string dann als <einen> wert zurück liefert ?
nichts! Nichts, bis auf die Kleinigkeit von Performance. Ich habe in der Tabelle demnächst ca. 20.000 Datensätze x <Anzahl Merkmale> drin, und diese 6-stellige Zahl ist eine Dimension, ab der Access langsam etwas schwindelig wird. Ich mache im Moment nichts anders als ein per dbOpenForward geöffnetes Recordset linear durchzulaufen und bei nicht veränderter ID den Eintrag in der Zieltabelle daneben zu setzen und andernfalls eine neue Zeile aufzumachen. Leider ist das Ergebnis eine Verzögerung von ca. 2 Sekunden. Ich bin am Tunen, hab es schon von 4 auf 2 runtergeschafft, aber ich glaube viel weiter runter geht es nicht mehr. Hatte gehofft, einen View aufbauen zu können, den sich Access selbst hält. Das Problem ist, ich kann nicht garantieren, dass Änderungen nur über die GUI erfolgen, d.h. selbst eine Tabelle verwalten ist schwierig - ein View wäre nicht mein Problem, sondern das von Access...
MfG
Rouven