Имеющий Что Сказать
Зарегистрирован: 09 September 2005
Сообщения: 66
Примеры кода: 1
|
RE[2]: Проблема сортировки view при переходe от sql2000 к sql2005 (distinct top... и view отсортированном виде) |
03 August 2006 11:07 |
|
|
|
|
Задача такая
есть view
SELECT int1,datetime1, namearticle FROM userdata
ORDER BY datetime1 DESC
где int1- номер раздела.
namearticle- статья.
в sql2000
если я делаю запрос к этой wiev
SELECT distinct top 7 int1 FROM view where datetime1<=getdate()
то я хочу чтобы он мне выдал последние 7 разделов где были размещены статьи
к примеру выдает
23
20
24
21
18
14
10
т.е я получаю номера разделов где были последние размещения статей.
в sql2005
если я делаю запрос к этой view
выдает
1
2
3
4
5
6
7
8
т.е не выполняется правило во внутренней view ORDER BY datetime1 DESC
как сделать получение последних разделов статей.
Если пишу внутренний запрос
SELECT distinct top 7 int1 FROM (SELECT int1,datetime1, namearticle FROM userdata
ORDER BY datetime1 DESC)as tmp where datetime1<=getdate()
то выдает ошибку.
Они изменили спецификацию? в чем проблема? как получить SELECT distinct top 7 int1 в отсортированном виде.
А теперь, 2 вопроса:
1. А с чего бы это сервер должен возвращать результат SELECT-а в каком-то определенном порядке, если в запросе порядок явно не указан?
2. А что мешает написать SELECT distinct top 7 int1 FROM view where datetime1<=getdate() ORDER BY datetime1 DESC?
А потому что есть view и в ней явно указано какой порядок SELECT int1,datetime1, namearticle FROM userdata ORDER BY datetime1 DESC
а уже в запросе мы делаем distinct к вьюшке, т.е. делаем запрос уже к отсортированным записям.
Напоминаю чтов sql2000 конструкция проходит на ура..
Начать сознательно жить нужно с того, как точно определить все свои цели в жизни во всех сферах. (PSYLIVE.ru)
p.s. у вас должно получиться минимум 5 категорий и 100 пунктов.
p.s.s. после этого напечатайте это в форме небольшой книжки и носите с собой
|
|