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

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

20.06.2011, 22:06. Показов 4047. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period . Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru