Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2023, 07:36   #1
Ghost111
 
Регистрация: 09.02.2023
Сообщений: 7
По умолчанию Запросы SQL

Всем доброго времени суток! Создал базу данных по предметной области "Шахматы", заполнил её, но с запросами не получается. Помогите, пожалуйста. Вот запросы, которые нужно написать:
1. Выбрать турнир с наибольшим количеством гроссмейстеров.
2. Выбрать те турниры, где ни одно призовое место не занял представитель страны-хозяина турнира.
3. Выбрать тех шахматистов, которые выиграли не менее трех турниров в течение 2021 г.
4. Определить турниры, в которых участник с самым высоким рейтингом занял последнее место.
5. Выбрать звание, количество шахматистов в этом звании, количество побед на турнирах в текущем году, среднее место на турнирах в текущем году.
6. Выбрать страну, количество шахматистов из этой страны, принимавших участие в турнирах, количество побед шахматистов из этой страны, количество побед на родине.
7. Выбрать шахматиста, рейтинг, статистику по всем проводившимся турнирам в текущем году, изменение рейтинга за год.

БД.rar

В архиве есть скриншоты схемы БД и заполненных таблиц, а также файл БД.

Вот схема (на всякий случай тут скину):

Шахматы.png
Ghost111 вне форума Ответить с цитированием
Старый 06.04.2023, 09:26   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
1. Выбрать турнир с наибольшим количеством гроссмейстеров.
1.1.
Код:
select *  
from <турниры>
1.2.
Код:
select * 
from <турниры>
inner join <участники> on ....
1.3.
Код:
select * 
from <турниры>
inner join <участники> on ...
inner join <шахматисты> on ...
1.4.
Код:
select * 
from <турниры>
inner join <участники> on ...
inner join <шахматисты> on ...
where <квалификация> =...
1.5.
Код:
select <идентификатор турнира>, count(<идентификатор шахматиста>)
from <турниры>
inner join <участники> on ...
inner join <шахматисты> on ...
where <квалификация> =...
group by <идентификатор турнира>
1.6.
Код:
select  top 1 <идентификатор турнира>, count(<идентификатор шахматиста>)
from <турниры>
inner join <участники> on ...
inner join <шахматисты> on ...
where <квалификация> =...
group by <идентификатор турнира>
order by count(<идентификатор шахматиста>) desc
1.7. готово!

P.S. все это есть в учебнике. Мартин Грубер. Понимание SQL. (почти все)


или же
Код:
select ....
from <шахматисты>
inner join <участники> on ...
inner join <турниры> on ...
where <квалификация> =...
group by <идентификатор турнира>
order by ...
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 06.04.2023 в 09:34.
evg_m вне форума Ответить с цитированием
Старый 06.04.2023, 19:26   #3
Ghost111
 
Регистрация: 09.02.2023
Сообщений: 7
По умолчанию

evg_m, Хорошо, спасибо. А как буду выглядеть структуры кода для 4-7 заданий? Первые 3 сделал, а дальше не получается. Помогите, пожалуйста
Ghost111 вне форума Ответить с цитированием
Старый 07.04.2023, 09:27   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

1.
Код:
select <иденификтор турнира>, 
count(*) as lastplace, -- --последнее место КАЖДОГО турнира
max(<квалификация>) as bestqv --высшая квалификация всех участников данного турнира
from <шахматисты>
inner join <турниры>
group by <идентификатор турнира>
реальный код может быть немного другим из-за других правил расчета
последнего места(count)
высшей квалификации(max)

2.
Код:
select 
from ( -- см. п.1  
       select .... 
      ) infot
inner join <участники> on  ... and ... =infot.lastplace -- и занял последнее указанное место на этом турнире
inner join <шахматисты> on ...   and ... =infot.best --и имеет высшуюуказанную квалификацию
Цитата:
from ( select .... )
называется такая конструкция вложенный запрос
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 07.04.2023 в 09:50.
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПРОСТЫЕ ЗАПРОСЫ помогите, пожалуйста!! Необходимо сформировать ПРОСТЫЕ SQL-запросы для GridView в ASP.NET Митяй675 SQL, базы данных 0 22.03.2020 18:39
Запросы и запросы с помощью QBE LollyMarry Microsoft Office Access 0 02.03.2014 01:14
ado запросы munhauz БД в Delphi 10 11.01.2013 01:41
Запросы ара Помощь студентам 20 13.05.2010 11:54
SQL запросы akimov_aleks БД в Delphi 3 21.04.2010 05:42