Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сортировка по одинаковым датам  [new]
smnt
Member

Откуда:
Сообщений: 83
А как вообще происходит сортировка в случае если дата\время одинаковы?
У меня такая проблема.
Есть таблица сообщений: первый столбец Дата (datetime), второй Сообщение.
Есть парные события которые происходят одновременно, т.е. дата\время у них одинаковы с точностью до миллисекунд. Но для которых тем не менее есть логическая последовательность (т.е. сначало первое, потом второе). При выборке сортирую их по Дате в порядке убывания (order by Дата desc). Так вот , почему то для одних пар событий все логически правильно (сначала первое событие, потом второе). А для некоторых наооборот, сначала идет второе событие, потом первое.
Может есть какие то встроенные правила сортировки в случае, если значения полей одинаковые?
29 дек 09, 15:43    [8133403]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по одинаковым датам  [new]
Konst_One
Member

Откуда:
Сообщений: 11515
если у вашей таблицы есть PK и такие события добавляются в нужной последовательности, то добавьте в сортировку еще поле PK
29 дек 09, 15:45    [8133431]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по одинаковым датам  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Konst_One
если у вашей таблицы есть PK и такие события добавляются в нужной последовательности, то добавьте в сортировку еще поле PK
Лучше бы добавить поле "Логический порядок событий" или "Логический приоритет",
раз он всё равно есть, и сортировать ещё и по нему.
29 дек 09, 15:54    [8133500]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по одинаковым датам  [new]
smnt
Member

Откуда:
Сообщений: 83
Что такое РК?
30 дек 09, 00:11    [8135276]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по одинаковым датам  [new]
Roman S. Golubin
Member

Откуда: 140002
Сообщений: 11541
smnt
Что такое РК?

Как все запущенно...
30 дек 09, 02:18    [8135439]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по одинаковым датам  [new]
Roman S. Golubin
Member

Откуда: 140002
Сообщений: 11541
smnt,

http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B2%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BB%D1%8E%D1%87
30 дек 09, 02:20    [8135440]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по одинаковым датам  [new]
smnt
Member

Откуда:
Сообщений: 83
Аааа.... что такое первичный ключ я знаю, просто еще не привык к таким аббревиатурам....
Провел следующий эксперимент:сам, в ручную заносил сообщения с одинаковыми датами.
Потом при выборке с сортировкой по дате они выводятся в том порядке, в котором заносились в базу. Получается где то в базе хранится информация о том, какое сообщение вошло первым, даже если дата/время у них одинаково.
31 дек 09, 10:45    [8140411]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по одинаковым датам  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
smnt
Получается где то в базе хранится информация о том, какое сообщение вошло первым, даже если дата/время у них одинаково.
Нет!
31 дек 09, 10:46    [8140421]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по одинаковым датам  [new]
smnt
Member

Откуда:
Сообщений: 83
А как тогда еще обьянить?
31 дек 09, 13:19    [8141023]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по одинаковым датам  [new]
Glory
Member

Откуда:
Сообщений: 104760
smnt
А как тогда еще обьянить?

Для того, чтобы подтвердить или опровергнуть ваше предположение, нужно точно знать порядок занесения записей в таблицу. Вот именно этого вы и не знаете, но строите предположения
31 дек 09, 13:26    [8141058]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по одинаковым датам  [new]
vino
Member

Откуда:
Сообщений: 1191
smnt
Аааа.... что такое первичный ключ я знаю, просто еще не привык к таким аббревиатурам....
Провел следующий эксперимент:сам, в ручную заносил сообщения с одинаковыми датами.
Потом при выборке с сортировкой по дате они выводятся в том порядке, в котором заносились в базу. Получается где то в базе хранится информация о том, какое сообщение вошло первым, даже если дата/время у них одинаково.
до какого-то момента выдача записей в таком порядке может быть, но никакой специальной информации для запоминания порядка ввода записей нет. Более того, в языке SQL нет способа узнать этот порядок и когда выполняется какая-то выборка, то порядок строк опеределяется оптимизатором самостоятельно, только если Вы не укажете желаемое упорядочение.
Если Вы хотите запоминать этот порядок, добавьте сами поле-счетчик (например, IDENTITY) при создании таблицы. В Вашем случае это как раз и будет первичный ключ, так как у Вас не гарантируется уникальность по Дате Сообщения.
31 дек 09, 16:06    [8141563]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить