Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/20: Рейтинг темы: голосов - 20, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 44

Как отобрать ограниченое количество записей

20.06.2011, 22:06. Показов 4091. Ответов 43
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот у меня к примеру есть 10 студентов, их них мне нужно отобрать 3 лучших(значения поля средний бал которых самое большое). Как это сделать?
Я думал взять отсортеровать их и по id выбрать там 3-х первых они и будут лучшими но у меня чет не получается.
Вот мой бред: Form1->Query1->SQL->Add("SELECT * FROM tbl WHERE Suma_ocenok >='"+Form1->Edit10->Text+"'Order by Suma_ocenok DESC SELECT * FROM tbl WHERE ID>='3'");
Если это делается иначе расскажите как, если я на верном пути помогите исправить этот запрос.
Зарание спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.06.2011, 22:06
Ответы с готовыми решениями:

Как используя масив отобрать определенное количество записей?
Работа с БД Builder C++ база Paradox. В общем есть 12 человек каждый из них набрал за два екзамена определенную суму осенок. Есть...

Ссылка занимает ограниченое количество пространчтва в блоке
<html> <head> <meta charset="utf-8" /> <title></title> <meta name="keywords" content="" /> <meta name="description"...

Как создать на форме таблицу с определенным количеством строк, а количество столбцов зависит от количество записей в таблице БД.
Здравствуйте. Я разрабатываю приложение составление расписание занятий в ВУЗе. И мне нужно реализовать такую идею: На форме есть вкладки...

43
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
20.06.2011, 22:50
прочти здесь
http://www.w3schools.com/sql/sql_top.asp
0
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 44
20.06.2011, 23:22  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
спс, уже смотрю

Добавлено через 30 минут
Form1->Query1->SQL->Add("SELECT * FROM tbl WHERE Suma_ocenok >='"+Form1->Edit10->Text+"'Order by Suma_ocenok DESC AND SELECT Suma_ocenok FROM tbl LIMIT "'+Form1->Edit9->Text+'");

Что тут не так? подскажите плз
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
20.06.2011, 23:44
We use the following SELECT statement:SELECT TOP 2 * FROM Persons

Добавлено через 3 минуты
Судя по статье LIMIT используется, только для MySQL и Oracle во всех остальных случаях нужно использовать TOP
0
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 44
20.06.2011, 23:56  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
We use the following SELECT statement:SELECT TOP 2 * FROM Persons

Добавлено через 3 минуты
Судя по статье LIMIT используется, только для MySQL и Oracle во всех остальных случаях нужно использовать TOP
Я немогу понять где тут вводить поле по которому отберать будет и количество отбераемых записей
SELECT TOP 2 * FROM Persons
куда тут поле указать?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
21.06.2011, 00:05
А здесь поле указывать и не надо он просто выберет количество из верхних строк.

Ну этот вопрос я думаю перенести на завтра
0
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 44
21.06.2011, 00:15  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
А здесь поле указывать и не надо он просто выберет количество из верхних строк.

Ну этот вопрос я думаю перенести на завтра
а сейчас никак? просто завтра я росчитывал показать уже работающий проект а тут как бы одна последняя запара(

Написал вот так вот Form1->Query1->SQL->Add("SELECT TOP 2 * FROM tbl");
он мне "Token 2" и что там ошибка в 1 строке
Что ему не нравится то?)
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
21.06.2011, 09:18
Цитата Сообщение от Tidehunter626 Посмотреть сообщение
а сейчас никак? просто завтра я росчитывал показать уже работающий проект а тут как бы одна последняя запара(

Написал вот так вот Form1->Query1->SQL->Add("SELECT TOP 2 * FROM tbl");
он мне "Token 2" и что там ошибка в 1 строке
Что ему не нравится то?)
Выложи код как ты это сделал?
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
21.06.2011, 09:28
Цитата Сообщение от Sasha
Судя по статье LIMIT используется, только для MySQL и Oracle
На всякий - в Oracle нет LIMIT, там используется либо псевдоколонка ROWNUM, либо аналит. функция ROWNUMBER()
1
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 44
21.06.2011, 10:56  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
Выложи код как ты это сделал?
Form1->Query1->SQL->Clear();
Form1->Query1->SQL->Add("SELECT TOP 2 * FROM tbl");
Form1->Query1->Open();
Ну вот но это мне кажется бредом
вот именно это "SELECT TOP 2 * FROM tbl", потому что мне нужно к примеру из 10 тех кто набрал проходной бал отобрать например 5 человек лучших(количество лучших должно задаватся) тойсть идет как бы ограниченое количество мест и мне нужно отобрать лучших а тут или я туплю или где тут задается количество лучших?
0
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 44
21.06.2011, 11:17  [ТС]
Цитата Сообщение от Tidehunter626 Посмотреть сообщение
Form1->Query1->SQL->Clear();
Form1->Query1->SQL->Add("SELECT TOP 2 * FROM tbl");
Form1->Query1->Open();
Ну вот но это мне кажется бредом
вот именно это "SELECT TOP 2 * FROM tbl", потому что мне нужно к примеру из 10 тех кто набрал проходной бал отобрать например 5 человек лучших(количество лучших должно задаватся) тойсть идет как бы ограниченое количество мест и мне нужно отобрать лучших а тут или я туплю или где тут задается количество лучших?
Вот это моя форма
Миниатюры
Как отобрать ограниченое количество записей  
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
21.06.2011, 11:37
Цитата Сообщение от Tidehunter626 Посмотреть сообщение
Вот это моя форма
Из всего выше тобой сказанного отвечу так
После того как ты отсортируешь список по баллам ты должен воспользоваться вот этим запросом

C++
1
"SELECT TOP 2 * FROM tbl"
Этот запрос отберёт тебе количество верхних строк самых лучших студентов. 2 это количество
строк которые тебе нужно отобрать.
Т.е если тебе надо 10 то запись должна быть такой
C++
1
"SELECT TOP 10 * FROM tbl"
Ну а через Edit я думаю ты догадаешься сам как сделать..............

Добавлено через 50 секунд
Забыл сказать ещё одно всё это должно делаться вложенным запросом
0
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 44
21.06.2011, 11:43  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
Из всего выше тобой сказанного отвечу так
После того как ты отсортируешь список по баллам ты должен воспользоваться вот этим запросом

C++
1
"SELECT TOP 2 * FROM tbl"
Этот запрос отберёт тебе количество верхних строк самых лучших студентов. 2 это количество
строк которые тебе нужно отобрать.
Т.е если тебе надо 10 то запись должна быть такой
C++
1
"SELECT TOP 10 * FROM tbl"
Ну а через Edit я думаю ты догадаешься сам как сделать..............

Добавлено через 50 секунд
Забыл сказать ещё одно всё это должно делаться вложенным запросом
Да спасибо огромное, всё терь думаю сделаю) Ну если что я напишу в личку)

Добавлено через 4 минуты
А как сделать вложеный запрос?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
21.06.2011, 11:53
Цитата Сообщение от Tidehunter626 Посмотреть сообщение
А как сделать вложеный запрос?
http://www.cbc-college.ru/open_blog.php?id=9
0
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 44
21.06.2011, 12:10  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
Form1->Query1->SQL->Add("SELECT * FROM tbl (WHERE Suma_ocenok >='"+Form1->Edit10->Text+"' Order by Suma_ocenok DESC ) TOP '"+Form1->Edit9->Text+"' * FROM tbl");

Что тут не так? он мне матерится на WHERE
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
21.06.2011, 12:19
Пробуй так
C++
1
2
3
4
Form1->Query1->Close();
Form1->Query1->SQL->Clear();
Form1->Query1->SQL->Add("SELECT * FROM tbl WHERE Suma_ocenok >='"+Form1->Edit10->Text+"'Order by Suma_ocenok DESC UNION SELECT TOP '"+Form1->Edit9->Text+"' * FROM tbl");
Form1->Query1->Open();
или так
C++
1
2
3
4
Form1->Query1->Close();
Form1->Query1->SQL->Clear();
Form1->Query1->SQL->Add("SELECT TOP '"+Form1->Edit9->Text+"' * FROM tbl UNION SELECT * FROM tbl WHERE Suma_ocenok >='"+Form1->Edit10->Text+"'Order by Suma_ocenok DESC");
Form1->Query1->Open();
Добавлено через 8 минут
А в целом пробуй и так
C++
1
2
3
4
5
Form1->Query1->Close();
Form1->Query1->SQL->Clear();
Form1->Query1->SQL->Add("SELECT * FROM tbl WHERE Suma_ocenok >='"+Form1->Edit10->Text+"'Order by Suma_ocenok DESC UNION");
Form1->Query1->SQL->Add("SELECT TOP '"+Form1->Edit9->Text+"' * FROM tbl");
Form1->Query1->Open();
0
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 44
21.06.2011, 12:51  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
Пробуй так
C++
1
2
3
4
Form1->Query1->Close();
Form1->Query1->SQL->Clear();
Form1->Query1->SQL->Add("SELECT * FROM tbl WHERE Suma_ocenok >='"+Form1->Edit10->Text+"'Order by Suma_ocenok DESC UNION SELECT TOP '"+Form1->Edit9->Text+"' * FROM tbl");
Form1->Query1->Open();
или так
C++
1
2
3
4
Form1->Query1->Close();
Form1->Query1->SQL->Clear();
Form1->Query1->SQL->Add("SELECT TOP '"+Form1->Edit9->Text+"' * FROM tbl UNION SELECT * FROM tbl WHERE Suma_ocenok >='"+Form1->Edit10->Text+"'Order by Suma_ocenok DESC");
Form1->Query1->Open();
Добавлено через 8 минут
А в целом пробуй и так
C++
1
2
3
4
5
Form1->Query1->Close();
Form1->Query1->SQL->Clear();
Form1->Query1->SQL->Add("SELECT * FROM tbl WHERE Suma_ocenok >='"+Form1->Edit10->Text+"'Order by Suma_ocenok DESC UNION");
Form1->Query1->SQL->Add("SELECT TOP '"+Form1->Edit9->Text+"' * FROM tbl");
Form1->Query1->Open();
Не один из вариантов не работает((
Везде матерится то на UNION или на "*"(
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
21.06.2011, 13:29
А зафик тут Union ?

Добавлено через 1 минуту
Вложенный запрос:

Select top <N> * from
(Select .. from .. where ..)
1
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 44
21.06.2011, 14:22  [ТС]
Цитата Сообщение от MsGuns Посмотреть сообщение
А зафик тут Union ?

Добавлено через 1 минуту
Вложенный запрос:

Select top <N> * from
(Select .. from .. where ..)
Form1->Query1->SQL->Add("SELECT TOP '"+Form1->Edit9->Text+"' * FROM tbl(SELECT * FROM tbl WHERE Suma_ocenok >='"+Form1->Edit10->Text+"'Order by Suma_ocenok DESC)");
Вот так вот написал не работает он матерится на "*" а если её убрать то на FROM
Блин как это чудо исправить? подскажите а(
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
21.06.2011, 15:52
Вот так должно фурыкать
C++
1
2
3
4
Form1->Query1->Close();
Form1->Query1->SQL->Clear();
Form1->Query1->SQL->Add("SELECT TOP '"+Form1->Edit9->Text+"' * FROM (SELECT * FROM tbl WHERE Suma_ocenok >='"+Form1->Edit10->Text+"'Order by Suma_ocenok DESC)");
Form1->Query1->Open();
Добавлено через 46 секунд
Цитата Сообщение от MsGuns Посмотреть сообщение
А зафик тут Union ?

Добавлено через 1 минуту
Вложенный запрос:

Select top <N> * from
(Select .. from .. where ..)
Спасибо ты меня надоумил
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.06.2011, 15:52
Помогаю со студенческими работами здесь

Двумерный массив. Отобрать в нем числа < 25 и найти их среднее, отобрать числа > 75 и вычислить их дисперсию
В массиве A(m,n) найти максимум и минимум и получить массив D(m,n), в котором максимумы и минимумы поменяються местами. Решите пожалуйста...

Отобрать книги, изданные в текущем году и вычислить количество таких книг
Помогите с фрагментом кода, который решит эту задачу.Спасибо

Блок состоит из 5 записей. Не получается задать количество записей, не кратное 5 (например 7)
удаётся записать в файл лишь кол-во записей, кратное 5 (5,10,15...) иначе не не записывает ничего type zap=record fam,...

Как посчитать количество записей в БД
Нужно в приложении сделать отчет типа &quot;Кол-во УМК по специальности в соответствующем году&quot;. Есть БД &quot;УМК&quot;. В ней гл....

Как узнать количество записей
как узнать сколько записей находиться в Recordset после executeQuery? Я перерыл всю документацию, но так и не нашел подходящего способа.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru