![]() |
Datenbank: MySQL • Version: 5 • Zugriff über: Zeos
Daten schnell zusammenfassen/gruppieren
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? |
Re: Daten schnell zusammenfassen/gruppieren
Ich hätte das jetzt so gemacht...
SQL-Code:
Aber das war vermutlich genau dein schon versuchtes Vorgehen.
INSERT INTO tabelle2 (name, nummern)
SELECT name, GROUP_CONCAT(nummer, ',') FROM tabelle1 GROUP BY name |
Re: Daten schnell zusammenfassen/gruppieren
Vielen Dank omata, das funktioniert und ist sogar noch recht schnell, ich hatte das so ähnlich versucht, hatte aber wohl doch irgendwas falsch gemacht! :) :thumb:
|
Re: Daten schnell zusammenfassen/gruppieren
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? |
Re: Daten schnell zusammenfassen/gruppieren
Vielleicht so...
SQL-Code:
UPDATE tabelle2 x
SET nummern = CONCAT( COALESCE(CONCAT(nummern, ','), ''), (SELECT GROUP_CONCAT(nummern) FROM tabelle1 WHERE name = x.name) ) |
Re: Daten schnell zusammenfassen/gruppieren
Funktioniert wieder perfekt, Vielen Dank nochmal. :thumb:
(War nur ein n zuviel bei dem 3. "nummern" :wink: ) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:08 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