Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 27.04.2016
Сообщений: 4
1

БД футбольных матчей

17.11.2017, 15:01. Просмотров 2596. Ответов 9

В MS Access создана БД, в которой хранятся результаты проведенных матчей. Матч проводится путем объявления пар и записи результата.
В запросе выводятся ВСЕ возможные пары. Как реализовать с помощью Delphi и/или SQL запроса обыкновенную жеребьевку?
SQL
1
2
3
4
SELECT Команда.Название AS Название_К1, Команда_1.Название AS Название_К2
FROM Команда, Команда AS Команда_1
WHERE Команда_1.Название<[Команда]![Название]
ORDER BY RND();
0
Миниатюры
БД футбольных матчей  
Изображения
 
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.11.2017, 15:01
Ответы с готовыми решениями:

Даны список футбольных команд высшей лиги России
Помогите пожалуйста создать приложение: Даны список футбольных команд высшей лиги России и...

бд футбольных матчей
как в этом месте (которое выделил) сделать так чтобы в &quot;Команду1&quot; и &quot;Команду2&quot; попадали разные...

Результаты футбольных матчей.
Даны два массива из 20 однозначных чисел. В первом из них записано количество мячей, забитых...

Прогнозирование футбольных матчей
Ребята, подскажите какие есть методы для прогнозирования футбольных матчей? Из интересного,...

9
3325 / 2868 / 776
Регистрация: 29.08.2013
Сообщений: 19,310
Записей в блоге: 1
17.11.2017, 15:11 2
Что есть "обыкновенная"?
0
0 / 0 / 0
Регистрация: 27.04.2016
Сообщений: 4
17.11.2017, 15:13  [ТС] 3
Разбиение по парам, а не перебор всех возможных пар
Например, 16 команд = 8 пар, 8 команд = 4 пары и тд...
0
1063 / 978 / 338
Регистрация: 07.08.2012
Сообщений: 2,757
17.11.2017, 16:31 4
Лучший ответ Сообщение было отмечено Kirusha_56 как решение

Решение

Сложно представить как в SQL можно составить запрос, в которым бы использовался генератор случайных чисел и получить от него пары.

Проще, ИМХО, сделать это в Дельфи.
Видится примерно так:
из базы в один массив загружается одна половина команд, в другой другая половина. Т.е. два массива, содержащих одиночные команды.
Нужен еще третий массив, где будут хранится пары после жеребьевки.

Затем, используя функцию Random, выбирается команда из первого массива, помещается в массив, в который сохраняются пары. Команда удаляется из массива, чтобы не быть выбранной вторично.
Следующий вызов Random выбирает команду из второго массива. С ней поступают так же: помещают в третий "парный" массив и удаляют из второго массива.
Получаем массив (третий) где представлены все отжеребившиеся пары.
1
3325 / 2868 / 776
Регистрация: 29.08.2013
Сообщений: 19,310
Записей в блоге: 1
17.11.2017, 16:44 5
Цитата Сообщение от Скандербег Посмотреть сообщение
Сложно представить как в SQL
но можно
другое дело - зачем?
0
0 / 0 / 0
Регистрация: 27.04.2016
Сообщений: 4
17.11.2017, 19:02  [ТС] 6
Цитата Сообщение от Скандербег Посмотреть сообщение
из базы в один массив загружается одна половина команд, в другой другая половина.
Есть какая-то функция, которая делит количество записей на два? Или что-то типа eof/2?
0
3325 / 2868 / 776
Регистрация: 29.08.2013
Сообщений: 19,310
Записей в блоге: 1
17.11.2017, 19:33 7
Какая функция? SQL или Delphi?
0
1063 / 978 / 338
Регистрация: 07.08.2012
Сообщений: 2,757
17.11.2017, 19:34 8
Цитата Сообщение от Kirusha_56 Посмотреть сообщение
Есть какая-то функция, которая делит количество записей на два?
Функции такой нет, но выкрутиться можно.
Допустим, все команды в одной таблице.
Тогда делается выборка 50% в прямой сортировке данных:
SQL
1
SELECT top 50 percent название FROM Команды ORDER BY Название
Это будет первая половина.
Затем та же выборка 50% но с обратной сортировкой:
SQL
1
SELECT top 50 percent название FROM Команды ORDER BY Название DESC
Это будет вторая половина команд.
понятно, что записей в таблице при это должно быть четное количество.
1
0 / 0 / 0
Регистрация: 27.04.2016
Сообщений: 4
17.11.2017, 21:27  [ТС] 9
Спасибо большое
0
114 / 114 / 33
Регистрация: 16.04.2013
Сообщений: 716
20.11.2017, 08:43 10
Цитата Сообщение от Скандербег Посмотреть сообщение
делается выборка 50% в прямой сортировке данных
т.е. если сортируем по Названию, то в первые 50% всегда будут попадать Названия на "А", а во вторые 50% на "Я". Значит в одной паре никогда не будут "А" - "А" и "Я" - "Я". Какая-то не очень рендомная жеребьевка получается))
И вообще ка-то все сложно задумано у вас! И массивы с результатами не сохранятся в базе.

Может лучше в таблице Команда, делаем integer поле Nпары, обнуляем его.
1. заводим переменную-счетчик i := 1 to 100500,
2. открываем датасет Команда c where Nпары = 0,
3. в рендомную строку датасета (в Nпары) забиваем текущее значение i, (i := i +1 делаем через 1 шаг)
4. обновляем датасет
5. если он не пустой - возвращаемся на п 3.

В качестве усложнения идеи - работать конечно не в самой таблице Команда, которая должна быть справочником, а в некой таблице Жеребьевка с полями КодКоманды, Nпары...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2017, 08:43

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Генератор футбольных матчей
Здравствуйте создал сайт на ucoz'е собираюсь из него делать on-line футбольного менеджера вот...

Генератор результатов футбольных матчей
Здравствуйте, хочу попросить помощи в написание/ресурсов/советов одного интересующего меня php кода...

Расписание матчей футбольных команд
Пишу маленькую игрушку. Вроде футбольная... В общем дается массив с именами (или первичными...

Разработка программы для расчета футбольных матчей
Надо разработать программу для расчета футбольных матчей Что должно быть в программе: Выбор...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.