Herbert: MySql Sort (order by) eingrenzen ?

Hallo, wer hat einen Rat ?
Kann man bei MySql die order by Anweisung eingrenzen ?
Ich möchte folgende Sortierung:
das Feld stamm1 soll nur mit dem 2 Zeichen im Feld sortiert werden, das Feld stamm2 soll normal sortiert werden

ich dachte irgendwie an so eine Anweisung, die natürlich nicht funktioniert:
$xabfrage = "select * from $tadrstamm order by substrstamm1,1,1) , stamm2";

... also 2. Stelle in der Länge 1
Die substr Anweisung wird natürlich nicht akzeptiert

Wie, bzw. kann ich das lösen ?
Vielen Dank
Herbert

  1. yo,

    $xabfrage = "select * from $tadrstamm order by substrstamm1,1,1) , stamm2";

    ich bin mir nicht ganz sicher, ob man bei mysql funktonen in der order by klausel einsetzen kann, ich denke mal schon. du hast auch syntaktiche fehler gemacht, falls es sich nicht um schreibfehler handelt. sollte es dennoch nicht gehen, kann du die funktion mit einem alias-namen in der ausgabe mit angeben und dann nach dem alias namen sortieren.

    Ilja

  2. echo $begrüßung;

    $xabfrage = "select * from $tadrstamm order by substr(stamm1,1,1) , stamm2";
    Die substr Anweisung wird natürlich nicht akzeptiert

    Nein, denn die Funktion heißt ja auch SUBSTRING oder MID. In deinem Fall kannst du auch LEFT() nehmen.

    echo "$verabschiedung $name";

  3. hallo,

    machen kann man das, nur geht das extrem auf die performance.. immerhin muss für jede anfrage eine virtuelle spalte erstellt werden.

    grüße Chris

    1. yo,

      machen kann man das, nur geht das extrem auf die performance.. immerhin muss für jede anfrage eine virtuelle spalte erstellt werden.

      nein, das kostest so gut wie gar keine zusätzliche performance.

      Ilja

      1. hallo,

        nein, das kostest so gut wie gar keine zusätzliche performance.

        Ilja

        mir ist es zwar im endefekt egal, nur mach einfach mal den test mit größeren tabellen. dort verdoppelt sich die zeit durch solche aktionen spielend leicht.

        grüße Chris

        1. yo,

          mir ist es zwar im endefekt egal, nur mach einfach mal den test mit größeren tabellen. dort verdoppelt sich die zeit durch solche aktionen spielend leicht.

          das hat mir großen oder kleinen tabellen nichts zu tun. eine zusätzliche spalte bei der ausgabe mit anzugeben ist kein performance-killer, wenn man nicht gerade hoch-mathematische funktionen ausführt. was zum beispiel geschwindigkeit kostet sind in aller regel daten von der festplatte auslesen oder full-scans, bzw. joins über größere tabellen auszuführen (weil kein geeigneter index gesetzt wurde). aber keines von den punkten ist bei dieser virtuellen spalte der fall. was also genau meinst du sollte performance kosten ?

          Ilja

  4. Vielen Dank für die Tips
    Habe nun noch ein Feld eingefügt das nur das enstr. Zeichen enthält und kann somit sortieren.
    Bei PHP finde ich kein Substring sondern nur ein substr; mit dem ich es nicht zum Laufen gebracht habe
    Mit der Alias - Anweisung kenne ich mich ( noch ) nicht aus;
    werde mich aber informieren

    ... also vielen Dank und einen schönen Abend
    Herbert