Hallo zusammen,
select ALL from tbl1, tbl2 where tbl1.fld1 = tbl2.fld1
bringt ein sortiertes Ergebnis.
select DISTINCT from tbl1, tbl2 where tbl1.fld1 = tbl2.fld1
bringt ein UN-sortiertes Ergebnis.
meine Installation: NT4.0 SERVER SP6 MS-SQL 7.0 SP3
Verschärfend kommt hinzu. Daß das Distinct-ergebnis je nach Kundeninstallation funktioniert und bei einer anderen Installation nicht; obwohl genau Gleich installiert wurde.
Ich verstehts nicht.
Ich hoff auf euch und danke schon im voraus für eure Hilfe.
JOE
bringt ein sortiertes Ergebnis.
bringt ein UN-sortiertes Ergebnis.
Du hast in beiden Fällen keine ORDER BY-Klausel. Ohne diese Klausel hängt es einfach nur davon ab wie das Statement intern von der Datenbank verarbeitet wird und es gibt keine Garantien dafür was rauskommt.
Mit ORDER BY bekommst du es garantiert sortiert:
SELECT \*
FROM ...
WHERE ...
ORDER BY spalte1, spalte2 DESC, ...
Nach der ORDER BY-Klausel einfach die Spalte(n) nach denen sortiert werden soll. Standardmässig wird aufsteigend sortiert, falls du bei einer Spalte absteigend willst, nach der Spalte noch das Schlüsselwort DESC (siehe Beispiel).
Grüße, Robert
Hallo Robert,
hab zwischenzeitlich mal eine Indexanalyse über den Query Analyzer durchgeführt. Neuen Index eingefügt, und Bingo, schon läuft die Sache. Der Unterschied zu den „unterschiedlichen“ Kundeninstallationen lag tatsächlich in unterschiedlichen Abfragepläne. Aber Jetzt läufts.
Vielen Dank.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Wenn du ein sortiertes Ergebnis haben willst, solltest du - wie Robert ja schon schrieb - immer eine ORDER BY-Klausel verwenden, schon um dich nicht von Zufälligkeiten innerhalb der Datenbank abhängig zu machen!
Gruß aus dem Norden
Reinhard Kraasch