Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Базы данных MySQL

  Все выпуски  

RusFAQ.ru: Базы данных SQL


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Базы данных SQL

Выпуск № 177
от 26.11.2006, 08:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 393, Экспертов: 40
В номере:Вопросов: 1, Ответов: 2


Вопрос № 63357: Здравствуйте использую MS SQL Server 2000. Насколько я знаю он не поддерживает функции First(), Last(), Pervois(),Next(). Подскажите как реализовать запрос из приложения....

Вопрос № 63.357
Здравствуйте использую MS SQL Server 2000. Насколько я знаю он не поддерживает функции First(), Last(), Pervois(),Next().
Подскажите как реализовать запрос из приложения.

Приложение:

Отправлен: 20.11.2006, 10:50
Вопрос задал: Mongol_ST (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Grigory
Здравствуйте, Mongol_ST!
Попробуйте вот так:
SELECT max(Pok.DATAPOKUP) AS LAST_DATAPOKUP,
'prevDATAPOKUP'=
(select max(Pok.DATAPOKUP)
from Pok
where Pok.DATAPOKUP < (select max(Pok.DATAPOKUP)
FROM Pok WHERE POK.IDMAg=1)
AND POK.IDMAg=1)
FROM Pok
WHERE POK.IDMAg=1
ORDER BY Pok.DATAPOKUP

Удачи!
Ответ отправил: Grigory (статус: 5-ый класс)
Ответ отправлен: 20.11.2006, 17:24

Отвечает: Игорь Елизаров
Здравствуйте, Mongol_ST!

операции first и last легко реализуются простой сортировкой, например
сортировка по дате покупки по убыванию

SELECT top 1 (Pok.DATAPOKUP) from pok WHERE POK.IDMAg=1
ORDER BY Pok.DATAPOKUP desc -- выдает последнюю покупку

сортировка по возрастанию выдаст первую покупку
SELECT top 1 (Pok.DATAPOKUP) from pok WHERE POK.IDMAg=1
ORDER BY Pok.DATAPOKUP desc -- выдает последнюю покупку

чтобы получить следующую, можно использовать несколько приемов.
стандартный прием
- запоминаем в переменной идентификатор текущей записи
- в запросе указываем значение, большее идентификатора

другой вариант - вначале отбираем нужное количество записей и из них отбираем одну. примерно так

select top 1 datapokup
from (select top 5 datapokup from pok WHERE POK.IDMAg=1
ORDER BY Pok.DATAPOKUP desc ) p1

то есть отбираем 5 записей, сотртируем по убыванию и из них выбираем первую (получается, что эта запись была пятая в списке )

для другого направления движения аналогично.
но все-таки с идентификаторами значительно лучше..



Ответ отправил: Игорь Елизаров (статус: 7-ой класс)
Ответ отправлен: 21.11.2006, 10:18


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное