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

Упражнение 23 стр. 4

Следующее решение использует соединение.

Решение 1.15.5

Консоль
Выполнить
  1. SELECT maker
  2. FROM Product INNER JOIN
  3.      PC ON Product.model = PC.model INNER JOIN
  4.      Laptop ON Laptop.model = Product.model
  5. WHERE PC.speed >= 750 AND
  6.      Laptop.speed >= 750
  7. GROUP BY maker;

Идея состоит в следующем: получить в результирующей таблице столбец с именем производителя, столбец со скоростью ПК этого производителя, а также столбец со скоростью портативного компьютера того же производителя. Поэтому, если задать нужные ограничения на скорости, то строки, удовлетворяющие этим ограничениям, должны дать то, что нужно (группировка по производителю устраняет дубликаты). Идея правильная, однако, соединяется не то и не по тем предикатам.

Действительно, первое внутреннее соединение даст нам список производителей и номера моделей ПК. Только ПК, так как model — первичный ключ в таблице Product. Поэтому второе внутреннее соединение с таблицей Laptop (по столбцу model!) даст нам пустой результирующий набор, так как в таблице Laptop нет (и не может быть!) моделей ПК.

Чтобы реализовать эту идею, нужно соединять производителей нужных ПК с аналогичными производителями портативных компьютеров, но не по номеру модели, а по имени производителя, или же использовать внешние соединения, а не внутренние.

ПиР

Решить задачу на SQL-EX.RU

Страницы: 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 Больше тэгов
Учебник обновлялся
сегодня
продать gnosis
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.