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

Есть простой запрос, что-то типа:

SELECT 
		x.num as 'идентификатор',
		isnull(a.name, '') as 'название', 
		isnull(a.ename, '') as 'название (англ.)',
		.....
		--isnull(slv.name, '') as 'видео-слоган',		-- дает ошибочную пересортировку

FROM   
		OPENXML(@id, '/Root/Num', 1) WITH (num int) AS x 
					left join TABLE1 a (nolock index=2) 
				 on av_id = x.num
					left join TABLE2 t
				on t.at_id = a.at_id	
					left join  TABLE3  slv
				on sl.slaid = a.slaid

если выключить из запроса поле isnull(slv.name, '') as 'видео-слоган', то на выходе строки отсортированы в том же порядке, как и на входе. Что и требуется.

Но почему при включении поля в запрос строки сортируются в разнобой?
Куды копать?
11 июн 09, 13:22    [7290036]     Ответить | Цитировать Сообщить модератору
 Re: Произвольная сортировка на выходе  [new]
GSerg
Member

Откуда: Магадан
Сообщений: 205
Вы не используете ORDER BY.
Поэтому получаете записи в случайном порядке, что глубоко правильно.
11 июн 09, 13:24    [7290055]     Ответить | Цитировать Сообщить модератору
 Re: Произвольная сортировка на выходе  [new]
Сортировка
Guest
GSerg,

order by я не использую ни в том, ни в другом случае. Везде стоит left join.

Почему именно включение одного поля вызывает перемешивание результата?
И вообще, когда такое происходит?
11 июн 09, 13:28    [7290080]     Ответить | Цитировать Сообщить модератору
 Re: Произвольная сортировка на выходе  [new]
GSerg
Member

Откуда: Магадан
Сообщений: 205
Такое происходит в каждом случае, когда не используется order by. Вы всегда, документированно, получаете встроки в случайном порядке. То, что они при определённых условиях оказываются в том порядке, который ван нужен, это чистая случайность.
11 июн 09, 13:31    [7290101]     Ответить | Цитировать Сообщить модератору
 Re: Произвольная сортировка на выходе  [new]
Glory
Member

Откуда:
Сообщений: 104760
Сортировка
GSerg,

order by я не использую ни в том, ни в другом случае. Везде стоит left join.

Почему именно включение одного поля вызывает перемешивание результата?
И вообще, когда такое происходит?

А что в этом странного, когда сервер возвращает результат так, как ему удобно ?
Почему он результаты разных запросов должны быть упорядочены одинаково ?
11 июн 09, 13:35    [7290113]     Ответить | Цитировать Сообщить модератору
 Re: Произвольная сортировка на выходе  [new]
Сортировка
Guest
GSerg,

хм, т.е. несколько месяцев стабильной работы программы - случайность??? Очень странно.
11 июн 09, 13:35    [7290114]     Ответить | Цитировать Сообщить модератору
 Re: Произвольная сортировка на выходе  [new]
Glory
Member

Откуда:
Сообщений: 104760
Сортировка
GSerg,

хм, т.е. несколько месяцев стабильной работы программы - случайность??? Очень странно.

Какая еще стабильность в отсутствии явно указанной команды ORDER BY ?
11 июн 09, 13:36    [7290122]     Ответить | Цитировать Сообщить модератору
 Re: Произвольная сортировка на выходе  [new]
Сортировка
Guest
Glory,

вы не кричите, а лучше объясните, почему? Что происходит? С чем это связано? Можно на пальцах )
11 июн 09, 13:38    [7290137]     Ответить | Цитировать Сообщить модератору
 Re: Произвольная сортировка на выходе  [new]
GSerg
Member

Откуда: Магадан
Сообщений: 205
Сортировка
хм, т.е. несколько месяцев стабильной работы программы - случайность???

И да, и нет.
Да, потому что порядок возврата не документирован и сервер мог вернуть как угодно в любой момент.
Нет, потому что реальный наблюдаемый порядок возврата определяется стоимостью операций на сервере. Сервер не будет специально шаффлить строки. Грубо говоря, если запрос был выполнен однопроходным сканом по таблице, в порядке этого скана записи и вернутся. Опять же, это грубо говоря, ибо формально порядок случаен.
11 июн 09, 13:38    [7290140]     Ответить | Цитировать Сообщить модератору
 Re: Произвольная сортировка на выходе  [new]
Glory
Member

Откуда:
Сообщений: 104760
Сортировка
Glory,

вы не кричите, а лучше объясните, почему? Что происходит? С чем это связано? Можно на пальцах )

Что объяснить то ? Что при отсуствии ORDER BY упорядочивание результата сервер выберет произвольно ? Это аксиома.
11 июн 09, 13:40    [7290154]     Ответить | Цитировать Сообщить модератору
 Re: Произвольная сортировка на выходе  [new]
Сортировка
Guest
GSerg,

спасибо, буду думать.
11 июн 09, 13:42    [7290166]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить