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

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

Хитрый запрос


Страницы:   1 2

Rail ©   (2002-06-06 09:24:00) 

Возможно ли только методами SQL выполнить запрос, который отбирает определенное количество записей?


Rail   (2002-06-07 09:19:00) [1]

Спасибо всем за участие. Попробую все методы. Еще раз всем спасибо. Я использую IB 6.0, но попробую и на MS SQL.

P.S. Какой-то черт под моим именем влез и пару раз ответил.


Johnmen   (2002-06-06 16:15:00) [2]

>passm (06.06.02 16:04)
>И ты пойми, что какой вопрос - такой ответ.

Истинно так !

>Еще раз ТОЛЬКО МЕТОДАМИ SQL.

Каккого такого SQL ? Какого его клона ?

>Rail : Ты просто не знаешь чего хочешь....

>All : Предлагаю закрыть вопрос за бессмысленностью...


passm   (2002-06-06 16:04:00) [3]

И ты пойми, что какой вопрос - такой ответ. Еще раз ТОЛЬКО МЕТОДАМИ SQL.


Rail   (2002-06-06 16:01:00) [4]

А вот и не подеретесь!:)
А я не подстрекатель!:)


Johnmen   (2002-06-06 15:50:00) [5]

>passm (06.06.02 15:41)

Ну как ты не поймешь, что по сути надо ограничить количество зафетченых записей (20, 1000 или 100000000000).

>У тебя есть другое решение?

Оно будет после указания типа СУБД. А на чистом SQL92 такое не пройдет.


passm   (2002-06-06 15:41:00) [6]

Результат зависит от содержимого таблицы T1, запрашиваемых полей и диапазона значений (во втором запросе она под алиасом Q2). Еще раз повторю: автор писал ТОЛЬКО МЕТОДАМИ SQL. У тебя есть другое решение? Напиши его. Буду рад его увидеть. ;)


Johnmen   (2002-06-06 15:32:00) [7]

>passm (06.06.02 15:24)
>Это не бред....

Да работать то будет. Вот только что получится в результате оной работы....(имел в виду именно результат) :-))))))



passm   (2002-06-06 15:24:00) [8]

Это не бред. Это SQL. Что конкретно не понятно?
Если СУБД автора вопроса понимает синтаксис SELEST... FROM (SELECT... то работать будет.
А что касается некой функции DBE (name?), то я не видел никакой на нее (BDE) ссылки в вопросе.


Johnmen   (2002-06-06 15:05:00) [9]

>dimis (06.06.02 15:03) : Совершенно согласен !!!! :)))))


dimis   (2002-06-06 15:03:00) [10]

>Johnmen © (06.06.02 14:46)

>но по-моему по сути это бред....
согласен
меня интересует "где автор вопроса"? пусть появится и ответик в конце концов какую субд он использует и использует ли bde
а спор между "мастерами" это "из пустого в порожнее"


Lusha   (2002-06-06 15:01:00) [11]

>pavelB (06.06.02 14:50)
Да-а-а? Век живи, век учись... А ее имя не подскажете?


Johnmen   (2002-06-06 14:58:00) [12]

>pavelB (06.06.02 14:50)
>есть функция в БДЕ которая ограничевает количество записей
>возвращаемых SQL

Можно ее здесь привести ?


pavelB   (2002-06-06 14:50:00) [13]

Lusha ©
есть функция в БДЕ которая ограничевает количество записей возвращаемых SQL


Johnmen   (2002-06-06 14:46:00) [14]

>passm (06.06.02 14:31)

Извини великодушно, но по-моему по сути это бред....


passm   (2002-06-06 14:31:00) [15]

Можно.
Разобъем задачу на две части:
1. Вывести строки таблицы с нумерацией
2. Вывести строки этой таблицы из некоторого диапазона.

Решение1:
SELECT COUNT(T2.ID) AS POS_NUM, T1.ID
FROM T1
INNER JOIN T1 AS T2 ON (T1.ID >= T2.ID)
GROUP BY T1.ID

Решение2:
SELECT Q1.POS_NUM, Q2.ID, Q2.NAME
FROM (SELECT COUNT(T2.ID) AS POS_NUM, T1.ID
FROM T1
INNER JOIN T1 AS T2 ON (T1.ID >= T2.ID)
GROUP BY T1.ID) AS Q1
INNER JOIN T1 AS Q2 ON (Q1.ID = Q2.ID)
WHERE Q1.POS_NUM BETWEEN :POS_MIN AND :POS_MAX
Где параметры POS_MIN и POS_MAX определяют диапазон строк.


Anatoly Podgoretsky   (2002-06-06 14:31:00) [16]

Зависит от базы


Nikolay M.   (2002-06-06 14:26:00) [17]

В MySQL есть прекрасная добавка LIMIT:
SELECT * FROM TableName LIMIT 200, 300
выберет 300 записей, начиная с 200-й (естественно, в рамках написанного запроса)


Lusha   (2002-06-06 10:48:00) [18]

>fool © (06.06.02 10:35)
Не всякий MS SQL знает директиву TOP... :)

>bpv (06.06.02 09:45)
А вот это для меня новость... :)


dimis   (2002-06-06 10:47:00) [19]

запрос не хитрый
просто на до выяснить какую субд пользуешь
fool привел пример из MSSQL
так делается в Oracle
select * from table1 where rownum<=5
p.s. я не уверен но по-моему rownum и в IB есть


fool   (2002-06-06 10:35:00) [20]

В MSSQL можно:
select top 5 * from таблица
возвращает первые 5,
сюда можно добавлять дополнительные условия с пом. where


Страницы:   1 2

Наверх

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