![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Хитрый запрос
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