none
Sotierung in Query Analyser 8.00.2039

    Frage

  • Hallo,

    Führe ich folgende Abfage im Query Analyser aus

    SELECT     PositionsID
    FROM         PositionsKopie
    WHERE     (Firma = 3)
    ORDER BY PositionsID DESC

    dann wird mit die kleinste PositionsID als erster Datensatz ausgewiesen, was ich nicht wollte.

    Lass ich "DESC" weg, dann bekomme ich die größte PositionsID als erster Datensatz ausgewiesen, was ich wollte.

    SELECT     PositionsID
    FROM         PositionsKopie
    WHERE     (Firma = 3)
    ORDER BY PositionsID

    Ich verstehe aber nicht warum, kann mir das wer erklären, weil im Enterprise Manager 5.2.R2 ist das umgekehrt!

    lg

    Dienstag, 12. Juni 2012 08:24

Antworten

Alle Antworten

  • Hallo azwinzds1

    azwinzds1 wrote:

    Führe ich folgende Abfage im Query Analyser aus

    SELECT PositionsID
    FROM PositionsKopie
    WHERE (Firma = 3)
    ORDER BY PositionsID DESC

    dann wird mit die kleinste PositionsID als erster Datensatz ausgewiesen,
    was ich nicht wollte.

    Welchen Datentyp hat PositionsID. Kannst Du hier mal Beispiele geben? Wenn es eine Zahl ist, kommt sicher die grösste zuerst, nicht die kleinste. Ich vermute daher, dass es sich hier um ein Textfeld handelt.

    Wenn es Text ist, dann hängt es wohl vom Textinhalt ab. Falls es ein Datum ist, dann wird das jüngste Datum zuerst ausgegeben.

    Falls in dem Textfeld nur Zahlen drin sind, kannst Du mal folgendes versuchen:

    ...
    ORDER BY CAST(PositionsID AS INT) DESC
    

    Gruss
    Henry

    Dienstag, 12. Juni 2012 09:53
  • Hallo,

    bei absteigender Sortierung (DESC) wird die höchste PositionsID zuerst ausgegeben und die kleinste kommt zuletzt.

    SQL wird immer vom SQL Server ausgeführt und so spielt es zunächst keine Rolle welches Programm verwendet wird.
    Allerdings gibt es Programme die selbsttätig an den Ergebnissen "herumfummeln",
    der SQL Server Query Analyzer tut so etwas nicht - Gott sei Dank - und der SQL Server EM eigentlich auch nicht.

    Damit Du nicht durch eigene Aktionen ein falsches Ergebnis zu sehen kommst,
    verwende bitte mal die Text-Anzeige (STRG+T) anstatt das Grid (STRG+D).

    Gruß Elmar

    Dienstag, 12. Juni 2012 09:55
    Beantworter
  • PositionsID hat den Datentyp int Größe 4 Bayte
    Dienstag, 12. Juni 2012 11:30
  • PositionsID hat den Datentyp int Größe 4 Bayte

    Führ mal bitte folgendes aus:

      SELECT MIN( PositionsId ) FROM PositionsKopie

    Danach dann:

      SELECT MIN( PositionsId ) FROM PositionsKopie WHERE Firma = 3

    Wenn bei beiden das korrekte Ergebnis kommt, führt mal das hier aus:

      SELECT  TOP 100 PositionsID FROM PositionsKopie WHERE Firma = 3 ORDER BY PositionsID ASC

    Danach dann:

      SELECT  TOP 100 PositionsID FROM PositionsKopie WHERE Firma = 3 ORDER BY PositionsID DESC

    Wenn hierbei nicht immer das richtige Ergebnis kommen sollte, erklär mal bitte kurz, was genau Du mit Query Analyser meinst. Das bei SQL Server 2000 enthaltene Tool?

    Was ist "Enterprise Manager 5.2.R2"?

    ---

    Das Problem könnte hier beschrieben sein:

      http://support.microsoft.com/kb/831675/DE

    Allerdings setzt Du ja SP4 für SQL Server 2000 ein. Die Buildnummer 2039 ist zwar nicht die aktuellste, ggfs. wäre es daher sinnvoll, die passenden Hotfixes noch zu installieren. Siehe dazu:

      http://support.microsoft.com/?kbid=894905

    Dort ist dann auch wieder ein Problem beschrieben, dass evtl. bei dir zum tragen kommt.

      http://support.microsoft.com/kb/925297
      [Das Ergebnis kann in der falschen Reihenfolge sortiert werden, wenn Sie eine Abfrage ausführen, die die ORDER BY-Klausel, zum Sortieren einer Spalte in einer Tabelle in SQL Server 2000 verwendet]


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 12. Juni 2012 12:35
  • Text-Anzeige (STRG+T) anstatt das Grid (STRG+D) am SQL Server Query Analyzer?
    Dienstag, 12. Juni 2012 12:37
  • Hallo,

    drücke einfach mal die Tasten STRG+T und führe die Abfrage aus.

    Gruß Elmar


    Dienstag, 12. Juni 2012 12:55
    Beantworter
  • Hallo,

    danke ich hab im SQL Server Query Analyzer die Tasten STRG+T gedrückt und

    SELECT     PositionsID
    FROM         PositionsKopie
    WHERE     (Firma = 3)
    ORDER BY PositionsID DESC

    ausgeführt und bekomme:

    PositionsID
    -----------
    600000053
    600000041
    600000041
    600000041
    600000039

    (5 row(s) affected)

    das was ich brauche ! Danke!!!

    Dienstag, 12. Juni 2012 13:39
  • Hallo,

    Wenn sich die Reihenfolge wieder ändert wenn Du aufs Grid (mit STRG+D) wechselst,
    schau mal bei den Einstellungen des Query Analysers nach,
    ob dort bei der Ausgabe-Einstellungen etwas verstellt ist.

    Ich habe den seit längerem nicht mehr installiert, so dass ich da keine genaueren Hinweise geben kann.

    Gruß Elmar

    Dienstag, 12. Juni 2012 15:59
    Beantworter
  • das was ich brauche ! Danke!!!

    Aber da dir das Problem auch an anderen Stellen um die Ohren fliegen kann, solltest Du mal prüfen, ob das nur diese eine Tabelle betrifft oder ob das Problem generell besteht. Wenn letzteres, wäre es angebracht, die Hotfixes zu installieren und zu schauen, ob das Problem damit behoben ist.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Mittwoch, 13. Juni 2012 08:51
  • Danke ich werde es prüfen und bekanntgeben
    • Als Antwort markiert azwinzds1 Dienstag, 30. April 2013 13:58
    Dienstag, 3. Juli 2012 16:25