AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Mehrere Spalte im Group by zusammenfassen
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere Spalte im Group by zusammenfassen

Ein Thema von Captnemo · begonnen am 7. Apr 2016 · letzter Beitrag vom 7. Apr 2016
Antwort Antwort
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#1

Mehrere Spalte im Group by zusammenfassen

  Alt 7. Apr 2016, 16:53
Datenbank: MySQL • Version: 5.6 • Zugriff über: Zeos
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.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: Mehrere Spalte im Group by zusammenfassen

  Alt 7. Apr 2016, 16:59
Die Aufgabenstellung ist mir nicht klar geworden, kannst Du das ggfls. noch etwas präzisieren?

Meinst Du sowas in der Art?
Delphi-Quellcode:
select Profil from (
  select Profil_a as Profil from tabelle
  union
  select Profil_b as Profil from tabelle
)
order by Profil
Union entfernt (soweit ich das weiß) bereits Dubletten, so dass ein zusätzliches Group By nicht erforderlich ist.
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#3

AW: Mehrere Spalte im Group by zusammenfassen

  Alt 7. Apr 2016, 17:08
Ich werde das mal ausprobieren. Aber es sieht so aus, als wäre das genau das, was ich gesucht habe.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#4

AW: Mehrere Spalte im Group by zusammenfassen

  Alt 7. Apr 2016, 17:41
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:
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
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.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo

Geändert von Captnemo ( 7. Apr 2016 um 17:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Mehrere Spalte im Group by zusammenfassen

  Alt 7. Apr 2016, 17:56
Lass mal die ganzen Klammern weg bis auf die beiden äußersten.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#6

AW: Mehrere Spalte im Group by zusammenfassen

  Alt 7. Apr 2016, 18:02
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:
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
Danke an euch beide.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

AW: Mehrere Spalte im Group by zusammenfassen

  Alt 7. Apr 2016, 18:05
Upps, bin mal wieder zu langsam, aber trotzem noch mein Senf:

Werde aus Deinem Statement nicht wirklich schlau, meinst Du sowas?
Code:
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
Du möchtest (ausgehend von den Tabellennamen) doch eine Liste aller Profile für vorne links, vorne rechts, hinten links und hinten rechts haben.
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
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#8

AW: Mehrere Spalte im Group by zusammenfassen

  Alt 7. Apr 2016, 19:22
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.
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:24 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