1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Order By ohne Auswirkung

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von sqler, 7 Dezember 2011.

  1. sqler

    sqler Benutzer

    Ich habe folgendes Problem:

    Mein Order By hat keine Auswirkung. Liegt es an dem folgenden Primary Key? Falls ja, wie kann ich eine vorhanden Tabelle neu sortieren lassen?

    SELECT Feld1, Feld2, Feld3, Feld4, Feld5
    INTO TabelleKopie
    FROM TabelleOriginal
    WHERE Feld5 = 1
    GROUP BY Feld4
    ORDER BY Feld3;

    ALTER TABLE TabelleKopie ADD PRIMARY KEY (Feld1);
    ALTER TABLE TabelleKopie ADD FOREIGN KEY (Feld2) REFERENCES Tabelle2 (Feld2);

    Hat jemand eine Idee?
     
  2. Walter

    Walter Administrator Mitarbeiter

    Ein Order by hat mit dem Primary Key nichts zu tun, auch nichts mit einem Index.

    Ich nehme eher mal an, Du hast ein Problem in Deinem GROUP BY. Bekommst Du eine Fehlermeldung (wenn ja, bitte hier rein stellen) oder wird nicht so sortiert wie Du es erwartest?
     
  3. sqler

    sqler Benutzer

    Die Sortierung greift bei mir nicht. Auch wenn ich andere Felder nehme. Mir fällt aber auf,
    dass die Zeilen immer nach dem Primary Key sortiert sind, daher kam ich auf die Idee.

    Fehlermeldung gibt es nicht.
     
  4. ukulele

    ukulele Datenbank-Guru

    Du führst ja auch keinen SELECT zur Anzeige von Daten aus sondern schreibst die Einträge gleich in die andere Tabelle. Dabei ist die ORDER BY Klausel eigentlich nicht sinnvoll (und wird eventuell gar nicht unterstützt). Erst beim Auslesen macht ORDER BY Sinn.
     
  5. sqler

    sqler Benutzer

    Hm, das wäre dann wirklich problematisch, da ich die Daten in diesem Fall in der mdb sortiert haben muss.
    Beim Auslesen (mit einem Reporttool) kann ich dies leider nicht mehr steuern.
     
  6. ukulele

    ukulele Datenbank-Guru

    Probier doch mal dir eine Sicht zu erstellen die nur das nötigste beinhaltet (ohne den PK) und sortiert wird und mach deinen SELECT da drauf. Nen Versuch wäre es wert.
     
  7. Ritschi

    Ritschi Aktiver Benutzer

    Hi
    Das Problem hatte ich am Montag auch. ;-)
    ORDER BY greift nur bei SELECT.
    Die Daten einer Tabelle werden anhand des gruppierten Index angezeigt.
    Der Primärschlüssel führt immer zu einem gruppierten Index.
    Sichten geben ein Resultset zurück das mit SELECT abgefragt wird und dann ja nochmal ein ORDER BY enthalten kann, dann würden die Ergebnisse also 2 mal sortiert.
    Laut ANSI SQL sind Sichten deshalb normalerweise unsortiert.
    Oracle und SQLServer2000 berücksichtigen das trotzdem, für 2005 und 2008 gibt es HotFixes von MS um dieses Verhalten wieder herzustellen.
    Ein anderer Trick ist in der Sicht SELECT TOP 999999 Spalte1, Spalte2, ... anzugeben.
     
Die Seite wird geladen...

Diese Seite empfehlen