Order By ohne Auswirkung

sqler

Benutzer
Beiträge
12
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?
 
Werbung:
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?
 
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.
 
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.
 
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.
 
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.
 
Werbung:
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.
 
Zurück
Oben