[SQL] Aggregation

Dieses Thema im Forum "SQL und Datenbanken" wurde erstellt von ExRevel, 19.07.2004.

  1. #1 ExRevel, 19.07.2004
    ExRevel

    ExRevel Routinier

    Dabei seit:
    16.02.2003
    Beiträge:
    430
    Zustimmungen:
    0
    Ort:
    Stuttgart
    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
     
  2. Anzeige

    Schau dir mal diesen Ratgeber an. Viele Antworten inkl. passender Shell-Befehle!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. hopfe

    hopfe Haudegen

    Dabei seit:
    01.04.2003
    Beiträge:
    733
    Zustimmungen:
    0
    Ort:
    Aachen
    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?
     
  4. #3 ExRevel, 19.07.2004
    ExRevel

    ExRevel Routinier

    Dabei seit:
    16.02.2003
    Beiträge:
    430
    Zustimmungen:
    0
    Ort:
    Stuttgart
    Einen standard MySQL Server.
     
  5. #4 hehejo, 19.07.2004
    Zuletzt bearbeitet: 19.07.2004
    hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
    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!
     
  6. #5 ExRevel, 19.07.2004
    ExRevel

    ExRevel Routinier

    Dabei seit:
    16.02.2003
    Beiträge:
    430
    Zustimmungen:
    0
    Ort:
    Stuttgart
    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...
     
  7. etuli

    etuli Betrunken

    Dabei seit:
    12.04.2003
    Beiträge:
    278
    Zustimmungen:
    0
    Ifnull( Null, '')
     
  8. #7 ExRevel, 19.07.2004
    ExRevel

    ExRevel Routinier

    Dabei seit:
    16.02.2003
    Beiträge:
    430
    Zustimmungen:
    0
    Ort:
    Stuttgart
    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.
     
  9. etuli

    etuli Betrunken

    Dabei seit:
    12.04.2003
    Beiträge:
    278
    Zustimmungen:
    0
    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
     
  10. #9 ExRevel, 19.07.2004
    ExRevel

    ExRevel Routinier

    Dabei seit:
    16.02.2003
    Beiträge:
    430
    Zustimmungen:
    0
    Ort:
    Stuttgart
    @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
     
  11. hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
    ??

    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
    ??
     
  12. #11 ExRevel, 19.07.2004
    ExRevel

    ExRevel Routinier

    Dabei seit:
    16.02.2003
    Beiträge:
    430
    Zustimmungen:
    0
    Ort:
    Stuttgart
    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
     
  13. hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
    Ok, na dann.
    *verwirrt*
     
  14. rhythm

    rhythm evolution now!

    Dabei seit:
    02.05.2004
    Beiträge:
    172
    Zustimmungen:
    0
    Ort:
    /home
    hey!

    kannst du den befehl bitte nochmal zur ansicht posten, mit dem du das problem gelöst hast?

    ciao, rhythm
     
  15. #14 ExRevel, 19.07.2004
    ExRevel

    ExRevel Routinier

    Dabei seit:
    16.02.2003
    Beiträge:
    430
    Zustimmungen:
    0
    Ort:
    Stuttgart
    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
     
  16. rhythm

    rhythm evolution now!

    Dabei seit:
    02.05.2004
    Beiträge:
    172
    Zustimmungen:
    0
    Ort:
    /home
    thx! :]
     
Thema:

[SQL] Aggregation

Die Seite wird geladen...

[SQL] Aggregation - Ähnliche Themen

  1. [SQL]Fehler: Can't connect to local MySQL server through socket..

    [SQL]Fehler: Can't connect to local MySQL server through socket..: Hallo Zusammen, ich habe einen vServer bei 1und1 stehen. Dieser lief bis gestern Problemlos( auch SQL). Nachdem ich nun gestern ein Board...