|
|
|
| А как быть если необходимо вывести в форме не 50 первых а 50 последних записей, причем отсортированы они должны быть по возрастанию? | |
|
| |
|
|
|
| WHERE NOT IN (SELECT TOP n FROM) | |
|
| |
|
|
|
|
|
--[1] top 10
select z.*
from (
select x.*
,dense_RANK() OVER(ORDER BY saldoeq DESC) amtop_rank
from (
бла-бла-бла
) x
) z
where amtop_rank<11
|
| |
|
| |
|
|
|
| select * from (Select top 50 * from x order by s desc) order by s asc
но похоже что автор решает задачу отображения нгужного количества строк на страницу, но не спрашивает об этом
select * from x limit 100, 50 | |
|
| |
|
|
|
|
"сакс" | |
|
| |
|
|
|
|
strF = "SELECT * FROM " & _
"(SELECT TOP 30 (Plategi.*, DSum('[Summa]','[PlategiRaznoska]', " & _
"'[Plategi_ID] = ' & [Plategi_ID]) AS SummaRazn FROM Plategi ORDER BY [Data] DESC) " & _
"ORDER BY [Data] ASC;"
|
что-то не хочет работать, пишет ошибка синтаксиса в выражении FROM | |
|
| |
|
|
|
|
"'[Plategi_ID] = ' & [Plategi_ID])
|
как то..... '
"[Plategi_ID] = " & [Plategi_ID] & ")
|
? | |
|
| |
|
|
|
| блин скобка лишняя. Все четко работает. Всем огромное спасибо. Так выручаете - впору проставляться.
| |
|
| |
|
|
|
| хорошая иде я.... | |
|
| |
|
|
|
| есть еще вопросик по данной теме - по этому запросу получаю не 30 записей в форме, как хотелось бы,а 42. Подскажите в чем дело и как с этим бороться? | |
|
| |
|
|
|
| TOP не выбирает между одинаковыми (равными) значениями и будет включать большее количество записей если значения некоторых из них равны | |
|
| |
|
|
|
| А ежели "пронумеровать" записи во внутреннем запросе, а во внешнем применить условие по нумеру?
Небыстро это, однако. | |
|
| |
|
|
|
|
и скорее всего не нужно
вероятно "задача" связана с какими-то "фичами" интерфейса - вроде "синхронизации записей в двух подчиненных формах" и т.п. | |
|
| |
|
|
|
| Селект даун 50 ... | |
|
| |
|
|
|
|
| Bottom правильнее, а даун веселее. | |
|
| |
|
|
|
| Bottom - это вы о чем ? | |
|
| |
|
|
|
| в некоторых диалектах поддерживаются выражения позволяющие обращаться с наборами записей выбирая по количеству - и снизу и сверху
предикаты SELECT TOP n ; SELECT BOTTOM n
есть и другие спососбы - как Силыч привел или как я ранее MySQLный синтаксис | |
|
| |
|
|
|
| Это нужно для того, чтобы пользователь работал с относительно небольшим числом записей, во первых и для более быстрого получения набора записей в форму во-вторых | |
|
| |
|
|
|
| все так и поняли...
что там во вторых? | |
|
| |
|
|
|
| Для этого применяют ограничение набора данных по диапазону дат/Дате.
День/Неделя/Месяц/Квартал/Год | |
|
| |
|
|
|
| я так и сделал, просто в день бывает до двухсот платежей, поэтому я решил ограничивать число выводимых в форму записей не только с помощью наложения ограничений по календарному диапазону, но и с использованием непосредственно ограничения на количество записей. | |
|
| |
|
|
|
| Если ключевое поле-счетчик, можно узнавать последнее на дату значение и делать выборку по диапазону значений счетчика. | |
|
| |
|
|
|
|
| Ну и что?
Будет не 50 записей, а 48, к примеру.
В чем проблема? | |
|
| |
|
|
|
| ну это уже дело принципа, а не программирования. | |
|
| |
|
|
|
|
...ну это уже дело принципа...
|
Проблема получить ровно 50 записей с уникальными значениями ключевого поля? | |
|
| |
|
|
|
| я так понял постраничный вывод (MS Jet)
1 - пятьдесят
2 - пятьдесят
3 - пятьдесят
... - пятьдесят
n - n | |
|
| |
|
|
|
| а как это будут выглядить? и при чем здесь уникальность значений? | |
|
| |
|
|
|
|
но и с использованием непосредственно ограничения на количество записей
|
это может замедлить систему вместо того, чтобы ее ускорить | |
|
| |
|
|
|
| Т.е. время выполнения запроса на выборку тридцати проиндексированных записей может быть больше чем время выполнения запроса на выборку нескольких сотен? | |
|
| |
|
|
|
| я что-то не понял - какой конкретно индекс имеется в виду?
такой, чтобы дал возможность определить на какой странице отображать запись...
при чем еще и из подфильтрованного по дате набора записей... | |
|
| |
|
|
|
| фильтр в этом случае использовать нет смысла. А что касаемо индекса, то здесь он действительно не при чем - т.к. критерии отбора записей не заданы.
Вообще должен признать врямя выполнение этого запроса не критично. | |
|
| |
|
|
|
|
Вообще должен признать врямя выполнение этого запроса не критично
|
тогда просто вложенными запросами "перевертышами" с разным ранправлением сортировки
например сначала берем 100 сверху SELECT TOP 100 * FROM tblOrders ORDER BY OrderID
потом из него берем сверху 10 SELECT TOP 10 FROM (SELECT TOP 100 * FROM tblOrders ORDER BY OrderID DESC) ORDER BY OrderID
получаем записи с 91 по 100
меняем в первом (вложенном) запросе SELECT TOP 200
получаем записи с 191 по 200 | |
|
| |
|
|
|
|
| никак
а что MaxRecords - поясни что ты имел в виду | |
|
| |
|
|
|
| MaxRecords Property
See AlsoApplies ToExampleSpecifics
Specifies the maximum number of records that will be returned by:
Example
To return the MaxRecords property for a form, you can use the following:
Dim l As Long
l = Forms(formname).MaxRecords
To set the MaxRecords property, you can use the following:
Forms(formname).MaxRecords = numrecords
это из хелпа. Но свойство не работает. | |
|
| |