Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запрос для [MSSQL]


Страницы:   1 2

KAA ©   (2002-03-19 16:10:00) 

Есть таблица "Склад": идентификатор (ключевое поле, автоматически увеличивается для каждой новой записи), наименование детали, цвет детали. В таблицу неограниченное число раз добавляют записи, указывая тип делтали и ее цвет.

Задача: У нас где-то задано кол-во деталей (N). Надо выбрать из таблицы последние поступившие на склад N деталей заданного наименования и заданного цвета.


Donal_Graeme   (2002-03-19 17:19:00) [21]

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


Lusha   (2002-03-19 17:18:00) [22]

>KAA
Имеется в виду
SELECT TOP :N ...

И в тексте программы
AnyQuery.ParamByName("N").AsInteger := n;

А на крайний случай всегда можно писать так...
AnyQuery.SQL.Text := Format("SELECT TOP %d...", [n]);

Удачи


KAA   (2002-03-19 17:13:00) [23]

>Lusha
Имеется ввиду SELECT TOP @N ? Не проглатывает.

>DiggerAbstract
Это для какой SQL? Честно говоря я даже не знаю, как звучит аналог ROW_NUMBER() для MSSQL2000, да и с конструкцией OVER я еще не сталкивался.


Johnmen   (2002-03-19 16:49:00) [24]

>KAA © : Как по номеру можно определить степень новизны записи ? :)


DiggerAbstract   (2002-03-19 16:47:00) [25]

что-то типа
SELECT
*
FROM
table T1
INNER JOIN (
SELECT
ROW_NUMBER() OVER(ORDER BY T.ID DESC) AS NUM,
T.ID
FROM
table T ) AS T2 ON T1.ID=T2.ID AND T2.NUM<= {N}


Lusha   (2002-03-19 16:45:00) [26]

А что работа с параметром не прокатывает?


KAA   (2002-03-19 16:39:00) [27]

>Johnmen
Не важно за какой период, у нвых идентификатор больше будет.

>Donal_Graeme
Взять N первых, если использовать SELECT TOP 50 в MSSQL2000, кол-во можно задать константой, а надо прочитать из ппеременной.


Donal_Graeme   (2002-03-19 16:33:00) [28]

N последних :-)
думаю, что не получится кроме как тупо выбрать все записи заданного наименования и цвета, отсортировав их по дате, и затем взять N последних (или первых, в зависимости от сортировки)


Johnmen   (2002-03-19 16:22:00) [29]

А последние поступившие - в каком смысле ?
За день, за год, за секунду ???


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо