DB: Mehrere Zeilen in einer Zeile zusammenführen

M

Maier2100

Gast
Hallo zusammen,

ich habe eine Java Desktop Anwendung auf Basis einer DB2 SQL Datenbank und muss mehrere Zeilen einer Tabelle mit einer ID in eine Zeile zusammenführen, verwenden kann ich Java code, SQL, Stored Procedures, einfach irgendwas, damit daraus eine Zieltabelle entsteht, dich ich wieder in der Datenbank abspeichern kann für ein Data Mining:

Quelltabelle (Key ist ID+Wert):
ID - Wert
1 - A
1 - B
1 - C
2 - A

Zieltabelle:
ID, WertA, WertB,WertC
1, 1,1,1
2, 1,0,0

Die Werte sind natürlich dynamisch, d.h. es kann sein, dass es von A-X geht, ich muss es also dynamisch machen.
Habt ihr eine Idee?
 
G

Gast2

Gast
Das einfachste wird wohl sein die Quelltabelle in Java einzulesen, ein paar Metainformationen zu erstellen und dann eine Zieltabelle zu erzeugen und die Werte abzuspeichern:

1) SELECT DISTINCT Wert From Quelltabelle
2) Speichere die Werte in eine HashMap als Key mit Anzahl 1
3) SELECT * FROM Quelltabelle
4) Update die Hashmap mit den Anzahl der Records für jeden Wert während du über das Resultset iterierst
5) Schreibe ein SQL das aus den Keys der HashMap Spaltennamen erzeugt
6) Inserte in die neue Tabelle die Werte aus der HashMap
 
M

Maier2100

Gast
Das einfachste wird wohl sein die Quelltabelle in Java einzulesen, ein paar Metainformationen zu erstellen und dann eine Zieltabelle zu erzeugen und die Werte abzuspeichern:

1) SELECT DISTINCT Wert From Quelltabelle
2) Speichere die Werte in eine HashMap als Key mit Anzahl 1
3) SELECT * FROM Quelltabelle
4) Update die Hashmap mit den Anzahl der Records für jeden Wert während du über das Resultset iterierst
5) Schreibe ein SQL das aus den Keys der HashMap Spaltennamen erzeugt
6) Inserte in die neue Tabelle die Werte aus der HashMap

Dann sind die Daten der Quelltabelle alle in der Hashmap und damit im RAM, sehe ich das richtig?
Das wird wohl problematisch, da die Tabelle deutlich komplexer und größer ist als in meinem Beispiel.

Ich habe gerade den SQL Pivot Befehl entdeckt, aber das scheint nicht das richtige für mein Problem oder?
 
G

Gast2

Gast
Dann nimmst du statt einer HashMap eine Tabelle in deiner DB ;)

SQL Pivot könnte auch gehn, habe allerdings nie das Vergnügen mit gehabt da unsere Oracles das nicht konnten.
 

bronks

Top Contributor
... Habt ihr eine Idee?
Mach es mit SQL. Mit T-SQL könnte es etwa so aussehen:

SQL:
DECLARE @id varchar(20)
DECLARE @alteid varchar(20)
DECLARE @wert1 varchar(20)
DECLARE @wert2 varchar(20)
DECLARE @wert3 varchar(20)

DECLARE cursor SCROLL CURSOR FOR
	SELECT id, wert FROM quelltabelle order by id und sonstwas anderem

OPEN cursor

FETCH FIRST FROM cursor into @id, @wert

WHILE @@FETCH_STATUS=0 BEGIN

    Hier drinnen etwa sinngemäß:

    Wenn die letzte @id nicht der aktellen @id entspricht
         insert into zieltabelle values (@alteid, @wert1 + ',' +  @wert2 +  ',' + @wert3)
         Leere die Variablen @wert1, @wert2, @wert3

    Wenn @wert1 leer
         @wert1 = @wert
    Wenn @wert2 leer
         @wert2 = @wert
    Wenn @wert3 leer
         @wert3 = @wert

    Merke Dir die @id, welche gerade verarbeitet wurde in @alteid.

   FETCH NEXT FROM cursor into @id, @wert
END

CLOSE cursor
DEALLOCATE cursor
 
G

Gast2

Gast
Das geht allerdings nur wenn du eine feste Anzahl an Spalten hast.

Natürlich kann man die Java Variante auch in T-SQL, PL/SQL oder so nachbilden. Aber ich finde da ist es in Java einfacher auszuprogrammieren.
 
M

mtheiss

Gast
SQL:
create table a (id int, value varchar(10));
SQL:
insert into a values (1, 'A'), (1, 'B'), (2, 'C'), (2, 'D'), (2, 'E'), (3, 'F');
SQL:
select id, group_concat(value separator ',') as allvalues from a group by id;
SQL:
+------+-----------+
| id   | allvalues |
+------+-----------+
|    1 | A,B       |
|    2 | C,D,E     |
|    3 | F         |
+------+-----------+
 
G

Gast2

Gast
Erfüllt die Anforderung auch nicht wirklich ;)

Ist aber wohl egal da er sich eh nicht mehr melded.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Mittelwert über mehrere Zeilen Datenbankprogrammierung 11
OnDemand Daten auf mehrere Tabellen aufteilen oder Spalten nutzen Datenbankprogrammierung 2
J Mehrere WHERE Werte benutzen Datenbankprogrammierung 2
G ID zuweisung eines TerminKalenders (mehrere Kalender) Datenbankprogrammierung 8
K Mehrere Benutzer Datenbankprogrammierung 6
D JPQL- Query über mehrere Tabellen Datenbankprogrammierung 7
O HSQLDB Eine Entität, mehrere Tabellen Datenbankprogrammierung 8
S Abfrage von Gruppentickets(Mehrere Resorts an einem Tag) Datenbankprogrammierung 1
E Mehrere Tabellenspalten mit INNER JOIN verknüpfen Datenbankprogrammierung 1
M MySQL Insert über mehrere Tabellen Datenbankprogrammierung 7
Androbin [Serializing] Mehrere Objekte in einer einzigen Datei speichern Datenbankprogrammierung 1
S MySQL Abfrage über mehrere Tabellen + Einträge werden überschrieben Datenbankprogrammierung 1
S HSQLDB Mehrere PreparedStatements ausführen Datenbankprogrammierung 3
I MySQL Vergleich über mehrere Tabellen! Join? Datenbankprogrammierung 6
J Mehrere Inserts bei Fehlschlag abbrechen Datenbankprogrammierung 2
P Mit Hibernate mehrere Datensätze löschen Datenbankprogrammierung 7
F [SQLite] Mehrere Datensätze einfügen Datenbankprogrammierung 12
D Frage zu INSERTS über mehrere Datenbanktabellen Datenbankprogrammierung 3
U Nur den ersten Datensatz löschen wenn mehrere gleiche da sind Datenbankprogrammierung 2
G JOIN Abfrage über mehrere Tabellen Datenbankprogrammierung 15
G SQL Abfrage über mehrere Tabellen Datenbankprogrammierung 28
O eine Tabelle hat mehrere PrimKey mit dem selben Wert Datenbankprogrammierung 9
T Theoriefrage : mehrere User vs gleichen Datensatz Datenbankprogrammierung 4
multiholle SQL Querry über mehrere Spalten Datenbankprogrammierung 12
N mehrere Abfragen nacheinander wie mit MS Access mit JAVA Datenbankprogrammierung 3
G Mehrere Tabellen abfragen Datenbankprogrammierung 7
D mehrere Datensätze in ein Listenfeld Datenbankprogrammierung 2
T JAVA JDBC mehrere Anfragen direkt hintereinander ausführen Datenbankprogrammierung 2
S Select über mehrere Datenbanksysteme Datenbankprogrammierung 14
M Mehrere Tabellen zusammenführen Datenbankprogrammierung 4
W Prepared Statement mehrere Zeichenketten Datenbankprogrammierung 4
F Mehrere unterschiedliche ResultSets Datenbankprogrammierung 7
P [Hibernate] Mehrere Keys in einem <set> Datenbankprogrammierung 11
G Insert-anweisung mehrere Varianten eine geht Datenbankprogrammierung 2
N mehrere tables hintereinander Datenbankprogrammierung 4
W Nur ein Datensatz wird angezeigt, obwohl mehrere existieren Datenbankprogrammierung 7
N Mehrere Abfragen gleichzeitig - was passiert da? Datenbankprogrammierung 6
L mehrere Abfragen mit einem Statement!? Datenbankprogrammierung 5
M Mehrere ResultSets gleichzeitig verwenden Datenbankprogrammierung 3
L Mehrere SQL-Statements gleichzeitig!? Datenbankprogrammierung 5
F mehrere Datenbankupdates nacheinander Datenbankprogrammierung 3
B SQlite Datenbank, trotz Statements wurden nicht alle Zeilen erzeugt? Datenbankprogrammierung 35
Kirby.exe Tabellen Zeilen combinen und splitten Datenbankprogrammierung 3
D MySQL Zeilen kumulieren Datenbankprogrammierung 8
E Wie kann man bestimmte Zeilen der Tabelle rot markieren? Datenbankprogrammierung 1
K zusammenfassen von zeilen Datenbankprogrammierung 2
G SELECT liefert leere Zeilen Datenbankprogrammierung 32
B Doppelte Zeilen einer Doppelten Spalte aus einer Tabelle entfernen. Datenbankprogrammierung 2
S Verkettung von Spalteninhalten aus mehreren Zeilen Datenbankprogrammierung 10
E Aus einer Tabelle Zeilen mit doppeltem Eintrag holen? Datenbankprogrammierung 4
G Spalten Namen auslesen und Zeilen daten auslesen Datenbankprogrammierung 17
Z Zeilen-Anzahl abfragen bei Datenbank Datenbankprogrammierung 4
O Size ResultSet betrachtete Zeilen "löschen" Datenbankprogrammierung 5
J Alle Spalten und Zeilen eines ResultSets ausgeben ? Datenbankprogrammierung 2
B Wie kann ich eine Jtable mit Inhalt einer SQL Abfrage füllen Datenbankprogrammierung 14
D Zweckmäßigkeit einer Schlüsseltabelle Datenbankprogrammierung 4
TH260199 Java-Programm. Probleme bei der Umsetzung von einer Kontaktverwaltung. Datenbankprogrammierung 7
S Variable in main soll mit der generierten Zahl aus einer Methode ausgefüllt werden Datenbankprogrammierung 3
N Oracle SQL - Nächst kleineren Namen2 zu einem Namen aus einer Tabelle Datenbankprogrammierung 3
T Datenbank auf einer Webseite aus einer Exceltabelle erstellen Datenbankprogrammierung 5
D JPA gleiche methode funktioniert an einer Stelle, an der anderen nicht Datenbankprogrammierung 3
nonickatall MySQL Auf neue Datensätze in einer Datenbank reagieren Datenbankprogrammierung 5
B Wie kopieren ich eine Spalte von einer Tabelle in eine andere Tabelle SQLite durch java code? Datenbankprogrammierung 26
P Verbindung zu einer Access Datenbank per Eclipse oder Intellij Datenbankprogrammierung 0
pkm Frage zu Encodingproblem bei einer Datenbankanbindung Datenbankprogrammierung 1
B Frage bei einer SQL Query Datenbankprogrammierung 3
F Mapping einer SQL Abfrage in eine Klasse Datenbankprogrammierung 4
J In einer bestimmten Spalte suchen mit Suchfeld (MS SQL) Datenbankprogrammierung 7
S Verbindung von einer Excel Datei zu Java Datenbankprogrammierung 2
J Sql Anfrage nach einer Zeile beenden Datenbankprogrammierung 6
J Welche Kriterien haben Einfluss auf die Geschwindigkeit einer Datenbank ? Datenbankprogrammierung 4
S Anmelden an einer msql datennbank Datenbankprogrammierung 1
F Auslesen einer .dbf-Datei, Zuordnung Index Datenbankprogrammierung 0
ralfb1105 Oracle Zwei ojdbc Driver in einer Applikation? Datenbankprogrammierung 13
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
Dimax MySQL 10 höchsten Werte aus einer Tabelle ermitteln Datenbankprogrammierung 30
L Speicherverbrauch Java Anwendung mit einer Datenbankanbindung Datenbankprogrammierung 19
temi Wie kann ich "Class" in einer DB speichern? Datenbankprogrammierung 2
F UPDATE - Befehl nur in einer Zeile Datenbankprogrammierung 11
I Oracle Wie ermitteln, welche Benutzer-(!)Tabellen in einer DB sind? Datenbankprogrammierung 1
DaCrazyJavaExpert Derby/JavaDB Wert einer Variable in der Datenbank direkt auf 1 setzten. Datenbankprogrammierung 71
D MySQL Suche nach Max Value in einer Tabelle Datenbankprogrammierung 7
W Daten aus einer Datei von einem VServer auslesen Datenbankprogrammierung 1
F MySQL Wie kann ich in Java Datensätze aus einer MySQL Datenbank gezielt in einzelne Arrays schreiben? Datenbankprogrammierung 9
F Java Objekte in einer Datenbank speichern Datenbankprogrammierung 4
MrSnake Hilfe bei erstellen einer DB Datenbankprogrammierung 12
M Wie übergebe ich Datenbankobjekte aus einer sql-Datenbank einer Java Klasse bzw. Instanz Datenbankprogrammierung 7
Z Finde den Fehler: Daten aus einer Access-Datenbank lesen Datenbankprogrammierung 12
D Aktualisierung einer ListView mit Daten aus MySQL-DB Datenbankprogrammierung 5
E Wie kann man mit einer ID-Spalte über eine Parameterübergabe auf eine Seite verweisen? Datenbankprogrammierung 17
E Warum funktioniert das Erzeugen einer View nicht? Datenbankprogrammierung 1
E Kann man in einer if-Bedingung auch SELECT-Statements überprüfen? Datenbankprogrammierung 23
E Was sind die Vorteile von DB2 im Gegensatz zu einer Oracle-Datenbank? Datenbankprogrammierung 5
E Wie geschieht der konzeptueller Entwurf einer Datenbank Datenbankprogrammierung 1
I SQLite Objekt speichern einer Serialisierter Klasse Datenbankprogrammierung 1
D HSQLDB INSERT INTO in einer For Schleife mit selber ID, machbar? Alternative? Datenbankprogrammierung 7
I Inhalt einer hsqldb anzeigen Datenbankprogrammierung 1
J Realisierung einer DB in Combi mit Java Datenbankprogrammierung 13
S Auswahl einer Datenbank Datenbankprogrammierung 0
M Derby/JavaDB Speicherplatz einer Zeile bestimmen Datenbankprogrammierung 0

Ähnliche Java Themen

Neue Themen


Oben