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

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

20.06.2011, 22:06. Показов 4061. Ответов 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
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 44
21.06.2011, 16:06  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Sasha Посмотреть сообщение
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();
Опять же ошибка на "*"
Token *
Line number 1' и там бла бла
Ну блин реально должно же уже работать че оно?(
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
21.06.2011, 16:07
У меня работало без ошибок
0
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 44
21.06.2011, 16:10  [ТС]
Вот такая вот ошибка
Миниатюры
Как отобрать ограниченое количество записей  
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
21.06.2011, 16:12
Цитата Сообщение от Tidehunter626 Посмотреть сообщение
'"+Form1->Edit9->Text+"'
Вместо вот этого поставь 2
0
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 44
21.06.2011, 16:28  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
'"+Form1->Edit9->Text+"'
Вместо вот этого поставь 2
Form1->Query1->SQL->Add("SELECT TOP 2 * FROM (SELECT * FROM tbl WHERE Suma_ocenok >='"+Form1->Edit10->Text+"'Order by Suma_ocenok DESC)");
Так?
Если да такая же ошибка только вместо "*" 2

Добавлено через 13 минут
Цитата Сообщение от Sasha Посмотреть сообщение
У меня работало без ошибок
Создал новый проект всё с 0 сделал такая же ошибка, как оно у Вас работает?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
21.06.2011, 16:55
Цитата Сообщение от Tidehunter626 Посмотреть сообщение
Form1->Query1->SQL->Add("SELECT TOP 2 * FROM (SELECT * FROM tbl WHERE Suma_ocenok >='"+Form1->Edit10->Text+"'Order by Suma_ocenok DESC)");
Такая запись у меня работает
0
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 44
21.06.2011, 17:02  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
Такая запись у меня работает
Покажите весь код действий при нажатии на нопку
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
21.06.2011, 17:16
Цитата Сообщение от Tidehunter626 Посмотреть сообщение
Покажите весь код действий при нажатии на нопку
C++
1
2
3
4
5
6
7
void __fastcall TForm1::Button4Click(TObject *Sender)
{
  ADOQuery1->Close();
  ADOQuery1->SQL->Clear();
  ADOQuery1->SQL->Add("SELECT TOP 2 * FROM(SELECT * FROM Vklad WHERE Summa_vklada BETWEEN 1000 AND 2000)");
  ADOQuery1->Open();
}
0
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 44
21.06.2011, 17:25  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
C++
1
2
3
4
5
6
7
void __fastcall TForm1::Button4Click(TObject *Sender)
{
  ADOQuery1->Close();
  ADOQuery1->SQL->Clear();
  ADOQuery1->SQL->Add("SELECT TOP 2 * FROM(SELECT * FROM Vklad WHERE Summa_vklada BETWEEN 1000 AND 2000)");
  ADOQuery1->Open();
}
А что означает ADOQuery1 вот именно само ADO? мож всё из-за этого?
Вот еще написал так
Form1->Query1->SQL->Add("SELECT TOP 2 * FROM(SELECT * FROM tbl WHERE Suma_ocenok BERWEEN 4 AND 10)");
тоже пишет мне Token *
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
21.06.2011, 17:38
Я тебе выложил кусок своего проэкта, так что можешь на него забить.

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

Делай так как у тебя было раньше
Ну а как на счёт ADO?
почему не просто Query1
я уже еще и еще раз пробовал создавать не работает у меня оно так я думаю что всё из-за этого ADO
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
21.06.2011, 17:54
ADO это технология предназначенная для работы с таблицами Microsoft Access, a ты используешь BDE.

Я так понял нужно менять алгоритм выбора строк.

Не по теме:


Я ушёл буду часа через 3

0
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 44
21.06.2011, 17:57  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
ADO это технология предназначенная для работы с таблицами Microsoft Access, a ты используешь BDE.

Я так понял нужно менять алгоритм выбора строк.

Не по теме:


Я ушёл буду часа через 3

ОК. Когда вернетесь отпишите что Вы имели ввиду говоря "Я так понял нужно менять алгоритм выбора строк."
Есть новые идеи как это можна сделать?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
21.06.2011, 23:23
А у тебя так работает?
C++
1
2
3
4
Form1->Query1->Close();
Form1->Query1->SQL->Clear();
Form1->Query1->SQL->Add("SELECT TOP 2 * FROM tbl");
Form1->Query1->Open();
0
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 44
21.06.2011, 23:38  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
А у тебя так работает?
C++
1
2
3
4
Form1->Query1->Close();
Form1->Query1->SQL->Clear();
Form1->Query1->SQL->Add("SELECT TOP 2 * FROM tbl");
Form1->Query1->Open();
Нет, не работает

Добавлено через 2 минуты
такая же ошибка что и раньше
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
21.06.2011, 23:39
А база данных не Paradox?

По пробуй переименовать имя таблицы
0
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 44
21.06.2011, 23:41  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
А база данных не Paradox?

По пробуй переименовать имя таблицы
Paradox!
А что не так?
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
22.06.2011, 10:23
А не так, что BDE поддерживает Local SQL, который в упор не знает ни про какие вложенные запросы (top вроде кушает, но не помню точно - давно не юзаю биде)
Короче, читать справку по Local SQL (она должна в хэлпе быть билдеровском)
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
22.06.2011, 10:25
MsGuns, подскажи, а можно каким-нибудь другим способом отобрать верхние строки из источника данных?
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
22.06.2011, 10:28
В Вашем явно "курсовом" проекте все можно решить непосредственно фильтрацией - т.е. Вы качаете всю таблицу в датасет (он не может быть большой - ну несколько сот записей от силы), пробегаете ее и ручками отбираете нужный "топ" в какойнить стрингрид.
И все веники

Добавлено через 2 минуты
Delphi
1
MsGuns, подскажи, а можно каким-нибудь другим способом отобрать верхние строки из источника данных?
Чисто на стороне "сервера" ? Для BDE не знаю такого, хотя можно конечно попробовать соорудить этажерку используя Group By и Having / In), но эт надо репку чесать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.06.2011, 10:28
Помогаю со студенческими работами здесь

Двумерный массив. Отобрать в нем числа < 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? Я перерыл всю документацию, но так и не нашел подходящего способа.


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru