AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Daten schnell zusammenfassen/gruppieren

Daten schnell zusammenfassen/gruppieren

Ein Thema von luke2 · begonnen am 3. Mär 2010 · letzter Beitrag vom 7. Mär 2010
Antwort Antwort
luke2

Registriert seit: 17. Jun 2009
117 Beiträge
 
#1

Daten schnell zusammenfassen/gruppieren

  Alt 3. Mär 2010, 16:50
Datenbank: MySQL • Version: 5 • Zugriff über: Zeos
Hallo,

Angenommen ich habe eine Tabelle in der z.B. folgendes steht:
Name (TEXT, INDEX) - Nummer (INT)
Jan - 5
Alex - 6
Jan - 8
Karl - 7
Ali - 3
Jan - 1
Alex - 4

Diese Daten müssen nun in eine Tabelle transformiert werden, die später so aussieht.
Name (TEXT, UNIQUE) - Nummern (TEXT)
Jan - 5,8,1
Alex - 6,4
Karl - 7
Ali - 3

Die erste Tabelle enthält einen Index auf "Name" und die zweite einen Unique Index auf "Name".

Mit mehreren Inserts, Updates und der Funktion group_concat() habe ich das schon geschafft, aber es ist extrem langsam, da in der ersten Tabelle sehr viele Einträge stehen können.

Hat jemand eine Idee, wie man das ganze mit am besten einen einfachen und schnellen Insert/Update-Befehl machen kann?
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Daten schnell zusammenfassen/gruppieren

  Alt 3. Mär 2010, 17:45
Ich hätte das jetzt so gemacht...
SQL-Code:
INSERT INTO tabelle2 (name, nummern)
SELECT name, GROUP_CONCAT(nummer, ',')
FROM tabelle1
GROUP BY name
Aber das war vermutlich genau dein schon versuchtes Vorgehen.
  Mit Zitat antworten Zitat
luke2

Registriert seit: 17. Jun 2009
117 Beiträge
 
#3

Re: Daten schnell zusammenfassen/gruppieren

  Alt 3. Mär 2010, 17:53
Vielen Dank omata, das funktioniert und ist sogar noch recht schnell, ich hatte das so ähnlich versucht, hatte aber wohl doch irgendwas falsch gemacht!
  Mit Zitat antworten Zitat
luke2

Registriert seit: 17. Jun 2009
117 Beiträge
 
#4

Re: Daten schnell zusammenfassen/gruppieren

  Alt 7. Mär 2010, 22:17
Ich muss dieses Thema doch nochmal aktivieren.
Angenommen die 2. Tabelle enhält bereits alle Namen der 1. Tabelle, aber noch nicht alle Nummern.

Name (TEXT, UNIQUE) - Nummern (TEXT)
Jan - NULL
Alex - NULL
Karl - 5,4
Ali - NULL

(evtl. schon vorhandene Nummern sollen bestehen bleiben.)

Gibt es eine Möglichkeit mit einem Update-Befehl diese Tabelle genau so wie oben zu gruppieren?
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Daten schnell zusammenfassen/gruppieren

  Alt 7. Mär 2010, 22:50
Vielleicht so...
SQL-Code:
UPDATE tabelle2 x
SET nummern = CONCAT(
                COALESCE(CONCAT(nummern, ','), ''),
                (SELECT GROUP_CONCAT(nummern)
                 FROM tabelle1
                 WHERE name = x.name)
              )
  Mit Zitat antworten Zitat
luke2

Registriert seit: 17. Jun 2009
117 Beiträge
 
#6

Re: Daten schnell zusammenfassen/gruppieren

  Alt 7. Mär 2010, 23:14
Funktioniert wieder perfekt, Vielen Dank nochmal.

(War nur ein n zuviel bei dem 3. "nummern" )
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz