Как получить решение задачи с использованием языка SQL?

Какой запрос к базе данных поможет Мише получить имена четырех пиратов, командующих на пиратском четырехпалубном корабле, в алфавитном порядке? Вот DDL-схема БД и дополнительная информация: [ссылка на БД].
  • 24 октября 2023 г. 8:48
Ответы на вопрос 1
Для решения данной задачи можно использовать язык SQL.

Предположим, у нас есть следующая схема базы данных:

Таблица "Пираты":
- id_pirate (идентификатор пирата)
- name (имя пирата)

Таблица "Корабли":
- id_ship (идентификатор корабля)
- name (название корабля)

Таблица "Командование":
- id_pirate (идентификатор пирата)
- id_ship (идентификатор корабля)

Дополнительная информация, которая нам известна, заключается в следующем:
- У всех пиратов есть записи в таблице "Командование".
- Каждый корабль имеет 4 палубы.
- Пираты, командующие на четырехпалубных кораблях, имеют записи в таблице "Командование" для всех четырех палуб.

Тогда, чтобы получить имена четырех пиратов, командующих на пиратском четырехпалубном корабле, в алфавитном порядке, можно использовать следующий SQL-запрос:

SELECT p.name
FROM Пираты p
JOIN Командование c ON p.id_pirate = c.id_pirate
JOIN Корабли s ON c.id_ship = s.id_ship
GROUP BY p.name
HAVING COUNT(*) = 4
ORDER BY p.name ASC;

При выполнении этого запроса, будут выбраны имена пиратов из таблицы "Пираты", которые имеют ровно 4 записи в таблице "Командование", и отсортированы по возрастанию имени.
Похожие вопросы