[SQL] Aggregation

E

ExRevel

Routinier
Hi...

Wenn ich in meiner SQL Datenbank zwei Felder habe, die einen String enthalten, "name" und "firma" und ich alphabetisch nach beiden sortieren möchte, wie stelle ich das am geschicktesten an. Wenn ich ein "order by name, firma asc" mache, erhalte ich eine Liste wo als erstes die Namen in alphabetischer reihenfolge kommen und danach die Firmennamen. Nun habe ich mir überlegt ein neues Feld im Select zu definieren und Name und Firmenname zusammenzufügen, doch da scheitere ich bei der Aggregation, das "+" tuts nicht und die anderen Funktionen die ich über Google so gefunden habe sagen mir nicht direkt zu :)

ciao Exi
 
Welches DB-System verwendest du, wenn du in einer Spalte Namen und Firmen haben willst könntest du je nach DB System vielleicht eine View erzeugen?
 
Also ich kann dir nur sagen, dass man mit '||' im SQL Strings aneinanderfügt.
Oder du machst es so:

Code:
SELECT (name || '  ' || firma) AS 'NameFirma' FROM tabelle
ORDER BY NameFirma ASC;

Bei mir funktioniert es so wunderbar!
 
Zuletzt bearbeitet:
Hm, das schaut gut aus, aber leider Funktioniert es nur wenn beide Felder nicht null sind, genau wie CONCAT(string1, string2). Das ist derzeit mein Problem, da meist nur Firma oder nur Name gesetzt sind.

Aber danke dir auf jeden fall...
 
Oder so... :) Ich hab nun CONCAT_WS benutzt, das überspringt NULL und ich verbinde die Strings mit ''. Das ganze als neues Feld und danach sortieren.

Danke für eure Hilfe.
 
Wenn ich ein "order by name, firma asc" mache, erhalte ich eine Liste wo als erstes die Namen in alphabetischer reihenfolge kommen und danach die Firmennamen. Nun habe ich mir überlegt ein neues Feld im Select zu definieren und Name und Firmenname zusammenzufügen
Da kommt uebrigens das gleiche raus vom Sortieren her. Ob nun Name und Firma als Spalten, oder Name und Firma als einzelne Spalte, ist da nicht sonderlich relevant. :)

mfg
 
@etuli, wenn du das meinst, es ist aber nicht, so... bei mir werden dann zuerst die Namen und dann die Firmen aufgelistet, frag mich nicht warum das so ist, aber sonst hätte ich sicherlich nicht so einen Aufstand gestartet, wenn es mit der einfachsten funktion getan gewesen wäre, gell! :)

ciao Exi
 
??

ExRevel, kannst du mir bitte nochmal erklären was du genau haben möchtest?

Du hast Spalte A und Spalte B und möchtest die wie sortiert haben?
order by A, B asc
order by B, A asc
??
 
Ich hab das Problem schon gelöst! :) Wir diskutieren nur noch so...

Ich hatte 2 Felder [a,b] und die waren nicht immer beide gefüllt und es sollte nach beiden sortiert werden... aber immer wenn ich die beiden dem order by übergeben habe wurden erst die namen oder erst die firma geordnet ausgegenben und hinten dran dann das dementsprechend andere feld. Das problem an sich war die felder zu verknüppfen, das hattest du schon vollkommen richtig erkannt.

ciao Exi
 
Klar, das schaut bei mir nun so aus (vereinfachte fassung)...
Code:
SELECT *, CONCAT_WS('', name, firma) AS sortierung FROM table WHERE 1 ORDER BY sortierung ASC

ciao Exi
 

Ähnliche Themen

dovecot und postfix Konfiguration Problem

Windows clients können nicht mehr auf lange laufendes System zugreifen

SQL Problem

PostgreSQL und Spaltenalias

Tabellen joinen - SUM()

Zurück
Oben