loading..
Русский    English
13:41
листать

Упражнение 37 стр. 1

Найдите классы, в которые входит только один корабль из базы данных (учесть также корабли в Outcomes).

Решение 3.2.1

Вот один из запросов, которые отвергает система проверки:

Консоль
Выполнить
  1. SELECT class
  2. FROM Ships
  3. GROUP BY class
  4. HAVING COUNT(name) = 1
  5. UNION
  6. SELECT class
  7. FROM Classes c, Outcomes o
  8. WHERE c.class = o.ship AND
  9. NOT EXISTS (SELECT 'x'
  10. FROM Ships s
  11. WHERE o.ship = s.class
  12. );

Первый запрос в объединении подсчитывает корабли каждого класса из таблицы Ships, оставляя в результирующем наборе только те классы, которые имеют в этой таблице только один корабль. Второй запрос определяет классы, у которых головной корабль находится в таблице Outcomes при условии, что кораблей такого класса нет в таблице Ships.

Рассмотрим следующий пример данных, для которых этот запрос будет давать неправильный результат.

Каждый, кто решал задачи по схеме данных «Корабли», знает, что такое «Бисмарк» (Bismarck). Это головной корабль, которого нет в таблице Ships. Теперь представим себе, что другой корабль класса «Бисмарк» имеется в таблице Ships, скажем, «Тирпиц» (Tirpitz).

Тогда первый запрос вернет класс «Бисмарк», так как в таблице Ships имеется один корабль этого класса. Второй запрос класс «Бисмарк» не вернет, так как предикат:

  1. NOT EXISTS (SELECT 'x'
  2. FROM Ships s
  3. WHERE o.ship = s.class
  4. )
для корабля «Бисмарк» в таблице Outcomes будет оценен как FALSE. В результате объединения этих запросов получим класс «Бисмарк» в выходных данных всего запроса.

Bookmark and Share
Страницы: 1 2 3 4
Тэги:
ALL AND AUTO_INCREMENT AVG battles CASE CAST CHAR CHARINDEX CHECK classes COALESCE CONSTRAINT Convert COUNT CROSS APPLY CTE DATEADD DATEDIFF DATENAME DATEPART DATETIME DDL DEFAULT DELETE DISTINCT DML EXCEPT EXISTS EXTRACT FOREIGN KEY FROM FULL JOIN GROUP BY Guadalcanal HAVING IDENTITY IN INFORMATION_SCHEMA INNER JOIN insert INTERSECT IS NOT NULL IS NULL ISNULL laptop LEFT LEFT OUTER JOIN LEN maker Больше тэгов
Учебник обновлялся
месяц назад
https://exchangesumo.com/obmen/ALPCNY-PRUSD/
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.