Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ограниченный запрос к Access, не пашет Limit 
:(
    Опции темы
Adanedel
Дата 8.7.2008, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 14.1.2008

Репутация: нет
Всего: нет



при запрос е к аксесу с 2005 ВБ не могу ограничить количество записей, аксес реагирует на Limit 10  как на ошибку
PM MAIL   Вверх
Idsa
Дата 8.7.2008, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Adanedel, в Access нужно использовать не Limit, а Top:
Код

SELECT Top 10 * FROM MyTable;



--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Adanedel
Дата 8.7.2008, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 14.1.2008

Репутация: нет
Всего: нет



ну это считывание последних 10 записей на сколько я понимаю, а меня интересует вообще выборка с ограничением на количество
PM MAIL   Вверх
Idsa
Дата 8.7.2008, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Это считывание первых 10 записей.
Top 10 эквивалентно Limit 10 и Limit 0, 10 в других СУБД.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Adanedel
Дата 8.7.2008, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 14.1.2008

Репутация: нет
Всего: нет



тогда обратно top что идет для считывания последних 10 ?
PM MAIL   Вверх
Idsa
Дата 8.7.2008, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(Adanedel @  8.7.2008,  17:36 Найти цитируемый пост)
тогда обратно top что идет для считывания последних 10 ? 

Перечитал 3 раза. Не понял. Знаки препинания на клавиатуре не только для красоты smile


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Akina
Дата 8.7.2008, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Если нужно отобрать последние 10, используется вложенный запрос:

Код

Select * 
From
(
  Select TOP 10 *
  From MyTable 
  Order By SomeField DESC
)
Order By SomeField ASC


PS. Если не указана сортировка - то вообще пофиг какие 10 записей выбирать. Заявляешь что это последние - и ни одна сволочь не докажет обратного.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Adanedel
Дата 8.7.2008, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 14.1.2008

Репутация: нет
Всего: нет



ну top считывает первые первые 10 записей, а мне надо считать последние 10 )

Добавлено через 8 минут и 57 секунд
спасибо)
PM MAIL   Вверх
Idsa
Дата 8.7.2008, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(Akina @  8.7.2008,  17:45 Найти цитируемый пост)
Если не указана сортировка - то вообще пофиг какие 10 записей выбирать.

Не знаю, как в Access, но в Sql Server, например, данные без указания order by сортируются по кластерному индексу. Так что любые выбирать - не вариант.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
PashaPash
Дата 8.7.2008, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 8
Всего: 49



Idsa, данные в РСУБД вообще никак не сортируются по определению. То, что у тебя они сортируются по кластерному индексу - просто совпадение.


--------------------
PM MAIL WWW   Вверх
Idsa
Дата 8.7.2008, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(PashaPash @  8.7.2008,  18:18 Найти цитируемый пост)
То, что у тебя они сортируются по кластерному индексу - просто совпадение. 

Хм... MSDN:
Цитата

When you create a clustered index, the table is copied, the data in the table is sorted, and then the original table is deleted. Therefore, enough empty space must exist in the database to hold a copy of the data.



--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
PashaPash
Дата 8.7.2008, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 8
Всего: 49



Idsa, это про внутреннюю сортировку данных в таблице. Нет никаких гарантий, что SQL Server сохранит ее при выборке. Даже наоборот - SQL Server скорее всего проигнорирует сортировку  clustered index, если оптимизатор решит что это позволит быстрее выбрать результат. Держи пример:
Код
CREATE TABLE Stones
     (LastName varchar(20) NOT NULL PRIMARY KEY CLUSTERED,
      FirstName varchar(20) NOT NULL UNIQUE NONCLUSTERED);

INSERT INTO Stones (LastName, FirstName)
SELECT 'Jagger', 'Mick'
UNION ALL
SELECT 'Jones', 'Brian'
UNION ALL
SELECT 'Richards', 'Keith'
UNION ALL
SELECT 'Watts', 'Charlie'
UNION ALL
SELECT 'Wyman', 'Bill';

SELECT LastName FROM Stones;

DROP TABLE Stones;
go

Результат: 
Код
Wyman
Jones
Watts
Richards
Jagger

сперто с http://sqlblog.com/blogs/hugo_kornelis/arc...-vs-Stones.aspx


--------------------
PM MAIL WWW   Вверх
Idsa
Дата 8.7.2008, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(PashaPash @  8.7.2008,  19:23 Найти цитируемый пост)
Idsa, это про внутреннюю сортировку данных в таблице. Нет никаких гарантий, что SQL Server сохранит ее при выборке.

Интересная информация. +1
Кстати вот вторая часть статьи с объяснениями.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.1062 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.