Wie kann ich verschiedene Zellen einer Spalte verbinden
Moderator: Moderatoren
-
- *
- Beiträge: 10
- Registriert: Mi, 19.01.2011 12:08
Wie kann ich verschiedene Zellen einer Spalte verbinden
Hallo,
ich habe jetzt schon seit zwei Tagen das Forum durchsucht, bin aber nicht fündig geworden: Ich habe folgendes Problem: zu verschiedenen Projekten (Projekt 1, 2 usw.) sind verschiedene Positionen nötig (z.B. Maler, Maurer...). In zwei unterschiedlichen Tabellen habe ich diese jeweils eingetragen und miteinander verknüpft. In einer Abfrage mit GROUP BY "Projekt" ist das Ergebnis dann:
Projekt1 Maler
Projekt1 Maurer
Projekt1 Schreiner usw.
nun möchte ich aber nur eine Zeile, in der steht:
Projekt1 Maler, Maurer, Schreiner
Bei Zahlenfeldern wäre es ja leicht über die SUM- Funktion, aber wie geht das als Aufzählung des Textes?
In einem Bericht würde es ja ganz leicht über die Gruppierungsbereiche gehen, ich brauche es aber in einer Tabellenzeile.
Für eine Lösung wäre ich euch sehr dankbar.
Viele Grüße
ich habe jetzt schon seit zwei Tagen das Forum durchsucht, bin aber nicht fündig geworden: Ich habe folgendes Problem: zu verschiedenen Projekten (Projekt 1, 2 usw.) sind verschiedene Positionen nötig (z.B. Maler, Maurer...). In zwei unterschiedlichen Tabellen habe ich diese jeweils eingetragen und miteinander verknüpft. In einer Abfrage mit GROUP BY "Projekt" ist das Ergebnis dann:
Projekt1 Maler
Projekt1 Maurer
Projekt1 Schreiner usw.
nun möchte ich aber nur eine Zeile, in der steht:
Projekt1 Maler, Maurer, Schreiner
Bei Zahlenfeldern wäre es ja leicht über die SUM- Funktion, aber wie geht das als Aufzählung des Textes?
In einem Bericht würde es ja ganz leicht über die Gruppierungsbereiche gehen, ich brauche es aber in einer Tabellenzeile.
Für eine Lösung wäre ich euch sehr dankbar.
Viele Grüße
Re: Wie kann ich verschiedene Zellen einer Spalte verbinden
Hallo,
wie sind denn deine Tabellen aufgebaut?
Ohne genauere Kenntnis welche Spalten es gibt und wie sie verknüpft sind ist eine Anwort schwierig.
G R
wie sind denn deine Tabellen aufgebaut?
Ohne genauere Kenntnis welche Spalten es gibt und wie sie verknüpft sind ist eine Anwort schwierig.
G R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
-
- *
- Beiträge: 10
- Registriert: Mi, 19.01.2011 12:08
Re: Wie kann ich verschiedene Zellen einer Spalte verbinden
Erst einmal vielen Dank dafür, dass Sie mir helfen wollen.
ich habe eine Tabelle "Veranstaltung" wie folgt:
ID
Veranstaltungsname
Veranstaltungsbeschreibung
...
eine zweite Tabelle "Instrument" mit
ID
Instrument
Anzahl
Einzelpreis
Nebenkosten
Veranstaltungsnr
...
es geht hierbei um Orchesterbesetzungen, Instrument ist z.b. Violine, gemeint sind natürlich, wie viele Spieler ich brauche.
verknüpft ist das Ganze über ID in "Veranstaltung" zu Veranstaltungsnr in Tabelle "Instrument", 1:n - Beziehung.
Ich möchte eine Abfrage, in der z.B. erscheint:
Konzert xy 2 x Violine, 1 x Viola
Das 2 x Violine mach ich über
SELECT "Veranstaltungsname", "Instrument", "Anzahl" , "Anzahl" + ' x ' + "Instrument" AS "Instrumente" FROM "Veranstaltung" AS "Veranstaltung", "Instrument" AS "Instrument"
Aber dann habe ich eben viele Zeilen, in jeder nur ein Instrument, ich möchte aber alle in einer Zeile.
Vielen Dank schon mal im Voraus für eure Bemühungen.
ich habe eine Tabelle "Veranstaltung" wie folgt:
ID
Veranstaltungsname
Veranstaltungsbeschreibung
...
eine zweite Tabelle "Instrument" mit
ID
Instrument
Anzahl
Einzelpreis
Nebenkosten
Veranstaltungsnr
...
es geht hierbei um Orchesterbesetzungen, Instrument ist z.b. Violine, gemeint sind natürlich, wie viele Spieler ich brauche.
verknüpft ist das Ganze über ID in "Veranstaltung" zu Veranstaltungsnr in Tabelle "Instrument", 1:n - Beziehung.
Ich möchte eine Abfrage, in der z.B. erscheint:
Konzert xy 2 x Violine, 1 x Viola
Das 2 x Violine mach ich über
SELECT "Veranstaltungsname", "Instrument", "Anzahl" , "Anzahl" + ' x ' + "Instrument" AS "Instrumente" FROM "Veranstaltung" AS "Veranstaltung", "Instrument" AS "Instrument"
Aber dann habe ich eben viele Zeilen, in jeder nur ein Instrument, ich möchte aber alle in einer Zeile.
Vielen Dank schon mal im Voraus für eure Bemühungen.
Re: Wie kann ich verschiedene Zellen einer Spalte verbinden
Hi,
wieviele unteschiedliche Instrumente willst Du verarbeiten?
Gruß R
wieviele unteschiedliche Instrumente willst Du verarbeiten?
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
-
- *****
- Beiträge: 473
- Registriert: Fr, 09.10.2009 16:44
- Wohnort: Bielefeld
- Kontaktdaten:
Re: Wie kann ich verschiedene Zellen einer Spalte verbinden
Hallo,
probier mal Dein SELECT am Ende mit GROUP BY "Projekt1", "Handwerker",... zu erweitern, dann kann das so aussehen:
Projekt1 ___ Maurer ___ xyz
___________Maler__ ___abc
_____________________def
Nach group by darf nur noch order by oder having ... stehen.
Wenn Du Zahl und 'x' und Instrument verbinden willst, dann geht das mit SELECT Anzahl || 'x ' || Instrument ... oder
CONCAT(Anzahl, CONCAT('X ', Instrument))
Grüße
Andreas
probier mal Dein SELECT am Ende mit GROUP BY "Projekt1", "Handwerker",... zu erweitern, dann kann das so aussehen:
Projekt1 ___ Maurer ___ xyz
___________Maler__ ___abc
_____________________def
Nach group by darf nur noch order by oder having ... stehen.
Wenn Du Zahl und 'x' und Instrument verbinden willst, dann geht das mit SELECT Anzahl || 'x ' || Instrument ... oder
CONCAT(Anzahl, CONCAT('X ', Instrument))
Grüße
Andreas
LO 4.3
AMD Athlon 64 3700+, 2.21 GHz, 4 GB RAM, Win XP SP3
iMac 2 GHz, 16 GB RAM/MacBookPro, 8 GB RAM, Mac OS X 10.9.5
Intel Core2 Quad CPU Q6600 @ 2,4 GHz, 4 GB RAM, Suse 13.2
MySQL 5.1: Pentium III, 666 MHz, 512 MB, Suse 12.1
AMD Athlon 64 3700+, 2.21 GHz, 4 GB RAM, Win XP SP3
iMac 2 GHz, 16 GB RAM/MacBookPro, 8 GB RAM, Mac OS X 10.9.5
Intel Core2 Quad CPU Q6600 @ 2,4 GHz, 4 GB RAM, Suse 13.2
MySQL 5.1: Pentium III, 666 MHz, 512 MB, Suse 12.1
Re: Wie kann ich verschiedene Zellen einer Spalte verbinden
Aloha
Eine solche Darstellung wirst Du mit der HSQLDB ohne z.B. Makros nicht hinbekommen.schleiereule hat geschrieben:Ich möchte eine Abfrage, in der z.B. erscheint:
Konzert xy 2 x Violine, 1 x Viola
-
- *
- Beiträge: 10
- Registriert: Mi, 19.01.2011 12:08
Re: Wie kann ich verschiedene Zellen einer Spalte verbinden
Vielen Dank für eure Antworten, ich glaube auch, ohne Makro geht es nicht, denn es sind sehr viele Instrumente.
Dann versuche ich es mal im Makro-Bereich.
Dann versuche ich es mal im Makro-Bereich.
Re: Wie kann ich verschiedene Zellen einer Spalte verbinden
Hallo zusammen,
das sehe ich anders, ich bin auch kurz vor einer Lösung innerhalb HSQLDB.
Daher nochmal die Frage, wieviele unterschiedliche Instumente willst Du pro Veranstaltung verarbeiten?
Komme erst abends dazu, das Ding zu Ende zu führen.
Gruß R
das sehe ich anders, ich bin auch kurz vor einer Lösung innerhalb HSQLDB.
Daher nochmal die Frage, wieviele unterschiedliche Instumente willst Du pro Veranstaltung verarbeiten?
Komme erst abends dazu, das Ding zu Ende zu führen.
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
-
- *
- Beiträge: 10
- Registriert: Mi, 19.01.2011 12:08
Re: Wie kann ich verschiedene Zellen einer Spalte verbinden
Hallo, vielen Dank für eure Bemühungen. Bisher sind es 40 verschiedene Instrumente, es kommen aber sicher noch 10 verschiedene dazu.
Also nicht gerade wenig...
Viele Grüße
Also nicht gerade wenig...
Viele Grüße
Re: Wie kann ich verschiedene Zellen einer Spalte verbinden
Hallo,
wie heute mittag angekündigt bin ich der Meinung, dass es geht.
Anbei schon mal eine DB, die 7 Instrumente nebeneinander anordnen kann, schau mal in die View "Auswertung_fertig".
In einer weiteren View, die noch nicht fertig ist, werden dann die Spalten aus "Auswertung_fertig" verkettet (Concat/||/++), natürlich mit einem Komma dazwischen.
Jetzt braucht man das Ganze "nur" noch um 43 Instrumente erweitern.
Nachteil: Viel Arbeit
Vorteil: absolut dynamisch
Ich mach mal weiter.
Gruß R
So, nun bin ich fertig. Siehe Anhang "Veranstaltungen2.odb"
Die DB kann bis zu 50 verschiedene Instrumente pro Veranstaltung in eine Zeile schreiben.
Im Formular "Veranstaltungen" kannst Du es direkt ausprobieren.
Gruß R
Habe die Datei "Veranstaltungen2.odb" noch mal ausgetauscht, weil in der neuen Version die 50 Views besser geordnet sind.
Gruß R
wie heute mittag angekündigt bin ich der Meinung, dass es geht.
Anbei schon mal eine DB, die 7 Instrumente nebeneinander anordnen kann, schau mal in die View "Auswertung_fertig".
In einer weiteren View, die noch nicht fertig ist, werden dann die Spalten aus "Auswertung_fertig" verkettet (Concat/||/++), natürlich mit einem Komma dazwischen.
Jetzt braucht man das Ganze "nur" noch um 43 Instrumente erweitern.
Nachteil: Viel Arbeit
Vorteil: absolut dynamisch
Ich mach mal weiter.
Gruß R
So, nun bin ich fertig. Siehe Anhang "Veranstaltungen2.odb"
Die DB kann bis zu 50 verschiedene Instrumente pro Veranstaltung in eine Zeile schreiben.
Im Formular "Veranstaltungen" kannst Du es direkt ausprobieren.
Gruß R
Habe die Datei "Veranstaltungen2.odb" noch mal ausgetauscht, weil in der neuen Version die 50 Views besser geordnet sind.
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Wie kann ich verschiedene Zellen einer Spalte verbinden
Aloha
Allerdings hat das natürlich rein gar nichts mit "absolut dynamisch" zu tun, wenn das Ganze sowohl durch physische Geschaffenheiten (Tabellen), als auch durch die Abfragen von vornherein limitiert ist.
Klar kann man per Holzhammer-Methode fast alles irgendwie machen, aber diese Herangehensweise widerspricht prinzipiell allem, wofür das Arbeiten mit einer Datenbank so steht.
Natürlich muss ich Dir erstmal allen Respekt zollen für die Arbeit, die Du Dir gemacht hast.F3K Total hat geschrieben:wie heute mittag angekündigt bin ich der Meinung, dass es geht.
Allerdings hat das natürlich rein gar nichts mit "absolut dynamisch" zu tun, wenn das Ganze sowohl durch physische Geschaffenheiten (Tabellen), als auch durch die Abfragen von vornherein limitiert ist.
Klar kann man per Holzhammer-Methode fast alles irgendwie machen, aber diese Herangehensweise widerspricht prinzipiell allem, wofür das Arbeiten mit einer Datenbank so steht.
-
- *
- Beiträge: 10
- Registriert: Mi, 19.01.2011 12:08
Re: Wie kann ich verschiedene Zellen einer Spalte verbinden
Trotz der Antwort von DPunch.
Ganz, ganz herzlichen Dank für diese Lösung. Sicher, sie ist umständlich, aber sie funktioniert.
Jetzt bin ich einen großen Schritt weiter.
Ganz, ganz herzlichen Dank für diese Lösung. Sicher, sie ist umständlich, aber sie funktioniert.
Jetzt bin ich einen großen Schritt weiter.
Re: Wie kann ich verschiedene Zellen einer Spalte verbinden
Hallo DPunch,
Ok, "absolut" ist wohl übertrieben.
Was aber ist verkehrt an meiner Lösung?
Meinst Du nicht, dass man mit einem Billig-Laptop wie meinem, selbst wenn man jeden Tag eine Veranstaltung hat, was bei meiner Restlaufzeit etwa 15000 Konzerte wären, problemlos klarkommt?
Leider habe ich mit HSQL noch keine andere Methode als die Dargestellte gefunden, mit der man aus einer Spalte mehrere machen kann.
Und, wo läge der Vorteil eines Makros?
Wenn ich das richtig einschätze, müßte man mit einem Makro einen neuen, zusätzlichen Speicherbereich für die verketteten Daten anlegen.
Eine weitere Tabelle oder Tabellenspalte?
Widerspricht das nicht ebenso der Arbeit mit einer Datenbank, könnte es nicht zur Inkonsistenz kommen?
Gruß R
PS: Die SQL-Views habe ich per "Makro" vervielfältigt und dann direkt ins gezipte "database/script" geschrieben, insofern ging es recht zügig.
Ok, "absolut" ist wohl übertrieben.
Was aber ist verkehrt an meiner Lösung?
Meinst Du nicht, dass man mit einem Billig-Laptop wie meinem, selbst wenn man jeden Tag eine Veranstaltung hat, was bei meiner Restlaufzeit etwa 15000 Konzerte wären, problemlos klarkommt?
Leider habe ich mit HSQL noch keine andere Methode als die Dargestellte gefunden, mit der man aus einer Spalte mehrere machen kann.
Und, wo läge der Vorteil eines Makros?
Wenn ich das richtig einschätze, müßte man mit einem Makro einen neuen, zusätzlichen Speicherbereich für die verketteten Daten anlegen.
Eine weitere Tabelle oder Tabellenspalte?
Widerspricht das nicht ebenso der Arbeit mit einer Datenbank, könnte es nicht zur Inkonsistenz kommen?
Gruß R
PS: Die SQL-Views habe ich per "Makro" vervielfältigt und dann direkt ins gezipte "database/script" geschrieben, insofern ging es recht zügig.

- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Wie kann ich verschiedene Zellen einer Spalte verbinden
Hallo Schleiereule,
ich habe noch ein Makro geschrieben, das die Dateneingabe deutlich vereinfacht:
Im Formular der Dateneingabe "Veranstaltungen" findest Du jetzt im Tabellenkontrollfeld für die Eingabe der Instrumente ein Listenfeld in der Spalte "Instrument". Die Liste dieses Listefeldes enthält beim Anlegen einer neuen Veranstaltung alle Instrumente die bisher je vorgekommen sind. Sobald Du ein Instrument ausgewählt hast, verschwindet es aus der Auswahlliste. So Kannst Du keinen Instrumententyp doppelt eingeben. Ausserdem reduziert sich die Zahl der noch verfügbaren Instrumente mit jedem gewählten, so dass die Auswahl schneller geht.
Gruß R
ich habe noch ein Makro geschrieben, das die Dateneingabe deutlich vereinfacht:
Im Formular der Dateneingabe "Veranstaltungen" findest Du jetzt im Tabellenkontrollfeld für die Eingabe der Instrumente ein Listenfeld in der Spalte "Instrument". Die Liste dieses Listefeldes enthält beim Anlegen einer neuen Veranstaltung alle Instrumente die bisher je vorgekommen sind. Sobald Du ein Instrument ausgewählt hast, verschwindet es aus der Auswahlliste. So Kannst Du keinen Instrumententyp doppelt eingeben. Ausserdem reduziert sich die Zahl der noch verfügbaren Instrumente mit jedem gewählten, so dass die Auswahl schneller geht.
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Wie kann ich verschiedene Zellen einer Spalte verbinden
Aloha
Und nicht dass wir uns da falsch verstehen: ich will Dir in keinster Weise Deine Arbeit madig machen, schon gar nicht, wenn Du damit jemandem den Tag versüsst hast.
Und das ist eben der Unterschied zu Deiner Arbeit mit X Views und Abfragen: Du verwendest die Datenbank selber, um eine Formatierung zu erzwingen. Datenbanken sind aber nicht (bzw nur in sehr rudimentärem Masse) dafür gedacht, nach Wunsch formatierte Ausgaben zu erzeugen, sondern lediglich die Daten vorzuhalten.
Die Aufbereitung dieser Daten sollte auf jeden Fall auf einer anderen Ebene geschehen (->Formular).
Aber gut, eigentlich wollte ich gar keine Grundsatzdiskussion anregen, sondern lediglich davon abraten, solche Wege als praktikable Lösung zu betrachten. Ohne Dir dabei zu nahe treten zu wollen.
Dass es keine Herangehensweise beim ernsthaften Arbeiten mit Datenbanken ist.F3K Total hat geschrieben:Was aber ist verkehrt an meiner Lösung?
Und nicht dass wir uns da falsch verstehen: ich will Dir in keinster Weise Deine Arbeit madig machen, schon gar nicht, wenn Du damit jemandem den Tag versüsst hast.
Dem ist in der Tat so, im Gegensatz zu z.B. MySQL mit GROUP_CONCAT bietet die HSQLDB nichts derartiges.F3K Total hat geschrieben:Leider habe ich mit HSQL noch keine andere Methode als die Dargestellte gefunden, mit der man aus einer Spalte mehrere machen kann.
Nein, natürlich nicht - man kann mit Makros ja problemlos ein tatsächlich dynamisches Formular zum Formatieren und Darstellen der gewünschten Daten füllen.F3K Total hat geschrieben:Und, wo läge der Vorteil eines Makros?
Wenn ich das richtig einschätze, müßte man mit einem Makro einen neuen, zusätzlichen Speicherbereich für die verketteten Daten anlegen.
Und das ist eben der Unterschied zu Deiner Arbeit mit X Views und Abfragen: Du verwendest die Datenbank selber, um eine Formatierung zu erzwingen. Datenbanken sind aber nicht (bzw nur in sehr rudimentärem Masse) dafür gedacht, nach Wunsch formatierte Ausgaben zu erzeugen, sondern lediglich die Daten vorzuhalten.
Die Aufbereitung dieser Daten sollte auf jeden Fall auf einer anderen Ebene geschehen (->Formular).
Aber gut, eigentlich wollte ich gar keine Grundsatzdiskussion anregen, sondern lediglich davon abraten, solche Wege als praktikable Lösung zu betrachten. Ohne Dir dabei zu nahe treten zu wollen.