Синтаксис SQL незнаком - PullRequest
0 голосов
/ 14 мая 2019

Код и утверждения ниже взяты из задачи университета. Почему a & b используются в этом синтаксисе?

  1. Сформулируйте оператор SQL: из таблицы «Страна» найдите отсортированный список стран, каждая из которых является крупнейшей на своем континенте. Континент - это континент, на котором расположена большая часть территории страны.
  2. Возвращает имена и имена клиентов, для которых сохранена накладная.

  3. ВЫБРАТЬ Имя, Континент ИЗ Страны, КАК ГДЕ Процент> 50 И Площадь> = (ВЫБЕРИТЕ МАКС. (Область) ИЗ страны КАК Б, ГДЕ a.Continent = b.Continent И b.Percentage> 50) ПОРЯДОК ПО ИМЕНИ ;

  4. ВЫБЕРИТЕ Имя, Имя ОТ клиента, ГДЕ ЕСТЬ (ВЫБЕРИТЕ CustomerDeliveryAddress ОТ адреса b, ГДЕ b.CustomerDeliveryAddress = a.CustomerID)

1 Ответ

0 голосов
/ 14 мая 2019

Потому что человек, пишущий запрос, не знает достаточно о написании хороших запросов. Необходимы псевдонимы таблиц. Это связано с тем, что необходимо отличать ссылки на столбцы в (коррелированном) подзапросе от ссылок на столбцы для внешнего запроса.

Однако настоятельно рекомендуется использовать значимые псевдонимы таблиц, а это означает сокращения таблиц. Также следует указать все имена столбцов.

Итак, первый из запросов должен выглядеть примерно так:

SELECT c.Name, c.Continent
FROM Country c
WHERE c.Percentage > 50 AND
      c.Area >= (SELECT MAX(c2.Area)
                 FROM Country c2
                 WHERE c2.Continent = c.Continent AND
-----------------------^ this is the correlation clause that references columns in both the inner and outer queries
                 c2.Percentage > 50
                )
ORDER BY Name;

Также крайне ошибочно использовать >= в этом синтаксисе, потому что вы смотрите на максимальное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...