Heren/Dames ontwikkelaars,
Ik zit met het volgende probleem waarbij de sortering van een tabel niet goed gaat.
De tabel:
Primary Key op 'ID' en een Index op 'OrderID - Asc' en 'DateChanged - Desc'.
Als ik daar een simpele query op los laat, krijg ik het volgende resultaat.
De cijfers in de laatste kolom komen niet uit de query, maar geven de volgorde aan waarin de records zijn aangemaakt in de database (iets duidelijker misschien dan het ID)
Gevolg is dat de records in de verkeerde volgorde op het scherm getoond worden. 4, 3, 1, 2 in plaats van het gewenste 4, 3, 2, 1
Als ik de query als volgt draai, krijg ik wel de juiste volgorde:
Mijn kennis van Indexen is nihil te noemen, maar het lijkt mij dat deze roet in het eten gooit. Maar ik tast wel even in het duister waarom de sortering dan zo raar is als ik geen ORDER BY mee geef aan de query.
Ik zit met het volgende probleem waarbij de sortering van een tabel niet goed gaat.
De tabel:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| CREATE TABLE [dbo].[OrderTrack]( [ID] [int] IDENTITY(1,1) NOT NULL, [OrderId] [int] NOT NULL, [OrderStatus] [int] NOT NULL, [DateChanged] [datetime] NOT NULL, [ChangedBy] [varchar](25) NOT NULL, [PublishToMember] [bit] NOT NULL, [IPAddress] [varchar](15) NOT NULL, [Remark] [varchar](250) NULL, [DeliveryDate] [datetime] NOT NULL, [Sender] [int] NOT NULL, [Receiver] [int] NOT NULL, CONSTRAINT [PK_OrderTrack] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY] ) ON [PRIMARY] |
Primary Key op 'ID' en een Index op 'OrderID - Asc' en 'DateChanged - Desc'.
Als ik daar een simpele query op los laat, krijg ik het volgende resultaat.
De cijfers in de laatste kolom komen niet uit de query, maar geven de volgorde aan waarin de records zijn aangemaakt in de database (iets duidelijker misschien dan het ID)
SQL:
1
2
3
| SELECT ID, OrderId, DateChanged, OrderStatus FROM [dbo].[OrderTrack] WHERE OrderId = 376637 |
| ID | OrderId | DateChanged | OrderStatus | Volgorde |
| 1390039 | 376637 | 2012-10-29 08:56:42.250 | 20 | 4 |
| 1390036 | 376637 | 2012-10-29 08:56:25.357 | 100 | 3 |
| 1389954 | 376637 | 2012-10-29 08:51:00.000 | 1 | 1 |
| 1390029 | 376637 | 2012-10-29 08:55:59.867 | 2 | 2 |
Gevolg is dat de records in de verkeerde volgorde op het scherm getoond worden. 4, 3, 1, 2 in plaats van het gewenste 4, 3, 2, 1
Als ik de query als volgt draai, krijg ik wel de juiste volgorde:
SQL:
1
2
3
4
| SELECT ID, OrderId, DateChanged, OrderStatus FROM [dbo].[OrderTrack] WHERE OrderId = 376637 ORDER BY OrderID ASC, DateChanged DESC |
Mijn kennis van Indexen is nihil te noemen, maar het lijkt mij dat deze roet in het eten gooit. Maar ik tast wel even in het duister waarom de sortering dan zo raar is als ik geen ORDER BY mee geef aan de query.
[ Voor 6% gewijzigd door PdeBie op 29-10-2012 11:00 ]