![]() |
Datenbank: MySQL • Version: 5.6 • Zugriff über: Zeos
Mehrere Spalte im Group by zusammenfassen
Hi,
ich brauch mal eure Hilfe für ein SQL-Statement. Ich will die Werte aus verschiedenen Spalten gruppieren, so dass eine gruppierte Spalte herauskommt. Ich habe in einer Tabelle verschiedene Spalten für verschiedene Profile (Profil_a, Profile_b, ...). Diese Spalten also ein einem Select zusammenfassen und anschließend per Group by eine Liste mit eindeutigen Profilen, aber halt in einer Spalte. Wie müsste ich das in einem SQL-Statement schreiben? Beispiel: in Spalte "Profil_a" gibt es die Werte "Profil_1", "Profil_2" und "Profil_3". In der Spalte "Profil_b" gibt die werte "Profil_1","Profil_2" und "Profil_4". Als Ergebnis möchte ich jetzt sowas haben: Profile ======= Profil_1 Profil_2 Profil_3 Profil_4 Alle suchen im Internet führen mich immer zu Beispielen, in denen mittels Concat Spalten zusammengeführt werden. Das ich aber nicht das was ich brauche. Mir fehlt wahrscheinlich der richtige Betriff dafür. |
AW: Mehrere Spalte im Group by zusammenfassen
Die Aufgabenstellung ist mir nicht klar geworden, kannst Du das ggfls. noch etwas präzisieren?
Meinst Du sowas in der Art?
Delphi-Quellcode:
Union entfernt (soweit ich das weiß) bereits Dubletten, so dass ein zusätzliches Group By nicht erforderlich ist.
select Profil from (
select Profil_a as Profil from tabelle union select Profil_b as Profil from tabelle ) order by Profil |
AW: Mehrere Spalte im Group by zusammenfassen
Ich werde das mal ausprobieren. Aber es sieht so aus, als wäre das genau das, was ich gesucht habe. :)
|
AW: Mehrere Spalte im Group by zusammenfassen
Der Weg scheint schon richtig zu sein, nur bekomme ich jetzt die SQL-Fehlermeldung "Every derived table must have its own alias".
Ich hab das ein wenig abgeändert in:
Code:
Funktioniert aber noch nicht so ganz. Mit einem Union und zwei selects kriege ich das hin. Aber ich brauche das über 4 Felder also mit 4 Selects.
Select Feld from
(select w_vl_reifengroesse as Feld from Reifenlager t1 union (select w_vr_reifengroesse as Feld from Reifenlager t2 union //<--Hier zeigt mir Mysql eine SQL-Syntax error an (select w_hr_reifengroesse as Feld from Reifenlager t3 union select w_hl_reifengroesse as Feld from Reifenlager t4 ) t31 ) t21 ) order by Feld |
AW: Mehrere Spalte im Group by zusammenfassen
Lass mal die ganzen Klammern weg bis auf die beiden äußersten.
|
AW: Mehrere Spalte im Group by zusammenfassen
Dann bekomme ich wieder die Fehlermeldung "Every derived table must have its own alias".
Aber trotzdem hast du recht. Wenn ich dann hinter die letzte Klammer dann noch eine Aliasnamen schreibe geht's :)
Code:
Danke an euch beide.
Select Feld from
(select w_vl_reifengroesse as Feld from Reifenlager t1 union select w_vr_reifengroesse as Feld from Reifenlager t2 union select w_hr_reifengroesse as Feld from Reifenlager t3 union select w_hl_reifengroesse as Feld from Reifenlager t4 ) t21 order by Feld |
AW: Mehrere Spalte im Group by zusammenfassen
Upps, bin mal wieder zu langsam, aber trotzem noch mein Senf:
Werde aus Deinem Statement nicht wirklich schlau, meinst Du sowas?
Code:
Du möchtest (ausgehend von den Tabellennamen) doch eine Liste aller Profile für vorne links, vorne rechts, hinten links und hinten rechts haben.
Select Feld from
(select w_vl_reifengroesse as Feld from Reifenlager union select w_vr_reifengroesse as Feld from Reifenlager union select w_hr_reifengroesse as Feld from Reifenlager union select w_hl_reifengroesse as Feld from Reifenlager ) a <-- manche Datenbanken verlangen hier einen Alias, aber nicht alle. order by Feld Unions kannst Du für beliebig viele Statements in eine Statement packen, die müssen nicht irgendwie extra geklammert werden, das Einzige, was übereinstimmen muss ist die Spaltenzahl und der jeweilige Datentyp der einzelnen Selects.
Code:
select spalte1 as Feld from Tabelle1
union select Delphi as Feld from Internet union select Praxis as Feld from Hamburg ... select spalte47 as Feld from Koelnisch11 union select Upps as Feld from Pannen union select Paula as Feld from Tabelle99 |
AW: Mehrere Spalte im Group by zusammenfassen
noch zur Ergänzung
Ich denke, das wichtige ist ein Alias für die Spalte im ersten Union select, die restlichen Unions brauchen nur noch Typgleichheit und Anzahl, keine Aliase mehr dann () drum und weiterverarbeiten. Aufpassen muss man auch mit Order by / Group by in den einzelnen Statements, aber mit Klammer außen sollte es relativ klar sein. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:02 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 by Thomas Breitkreuz