|
Программирование >> Исключение дубликатов строк
Решение с использованием UNION можно найти в (Good Bowlers TBird Bolero UNION (120 строк). Решение с использованием WHERE можно найти в Good Bowlers TBird Bolero WHERE (125 строк). 2. Сап you explain why the row counts are different in the above solution queries? . ( Можно ли объяснить, почему в приведенных решениях для запросов предварительные счета отличаются?) {Совет: Попытайтесь воспользоваться UNION ALL из первого запроса.) Бозо донных рецептов 1. Display а list of all ingredients and their default measurement amounts together with ingredients used in recipes and the measurement amount for each recipe . ( Отобразить на экране все компоненты и единицы измерения их количества, определяемые по умолчанию, вместе с компонентами, используемыми в рецептах, и единицами измерения для каждого рецепта .) {Совет: Для решения этой задачи требуется один простой JOIN и один сложный JOIN.) Решение можно найти в Ingredient Recipe Measurements (144 строки). iiliii Подзапросы Невозможно решить проблему, используя тот же способ мышления, который ее породил . Альберт Эйнштейн Вопросы, россмотривоемые в донной глоне: то предстовляет собой подзапрос одзопросы кок вырожения со столбцами одзапросы как фильтры использование подзапросов риллеры операторов /1тоги Зодочи для самостоятельного решения предыдуш,их главах было показано множество способов работы с данными из нескольких таблиц. Все методы, рассмотренные до сих пор, фокусировались на связывании подмножеств информации - одного или нескольких столбцов и одной или нескольких строк из единой таблицы или запроса, вложенного в условие FROM, или с использованием оператора UNION. В данной главе представлены эффективные способы извлечения единственного столбца из таблицы или запроса и использования его в качестве типизированного выражения либо в условии SELECT, либо в условии WHERE. Следует усвоить два основных момента: 1. В SQL всегда суш,ествует несколько способов решения конкретной задачи. В этой главе приводятся новые способы решения задач, уже рассмотренных в предыдуш.их главах. 2. Можно построить сложные фильтры, которые не зависят от таблиц условия FROM. Это важная концепция, потому что использование подзапросов в условии WHERE является единственным способом получения правильного количества строк в ответах, когда требуются строки из одной таблицы, основанные на отфильтрованном содержимом из других связанных таблиц. Что првдстовлпвт собой подзапрос Говоря простым языком, подзапрос - это выражение SELECT, которое вложено в одно из условий оператора SELECT для образования оператора окончательного запроса. В данной главе подзапрос будет определен более формально и будет показано, как использовать его иным образом, чем в условии FROM. Стандарт SQL определяет три типа подзапросов: 1. Строковый подзапрос - вложенное выражение SELECT, возвращающее больше одного столбца и только одну строку. 2. Табличный подзапрос - вложенное выражение SELECT, возвращающее один или несколько столбцов и ни одной или несколько строк. 3. Скалярный подзапрос - вложенное выражение SELECT, возвращающее только один столбец и не более одной строки. Строковый подзопрос Строки, возвращенные запросом, фильтруются путем построения предиката сравнения в условии WHERE, которое сравнивает значение столбца с литералом, выражением или другим столбцом. Простой запрос с использованием единственного предиката сравнения должен выглядеть подобно следующему: SQL SELECT Customers.CustLastName FROM Customers WHERE Customers.CustAreaCode > 415 Стандарт SQL определяет конструктор строкового значения, используемый как часть предиката условия поиска в условии WHERE, HAVING или ON. Однако еще мало коммерческих систем базы данных поддерживают этот синтаксис. Вот пример условия WHERE, которое использует конструктор строкового значения: SQL SELECT Customers.CustLastName FROM Customers WHERE (Customers.CustAreaCode, Customers.CustZipCode) > (415, 94110) Здесь условие WHERE запрашивает строки, в которых комбинация CustAreaCode и CusrZipCode больше, чем комбинация 415 и 94110. Это то же самое, что и запрос: SQL SELECT Customers.CustLastName FROM Customers WHERE (Customers.CustAreaCode > 415) OR ((Customers.CustAreaCode = 415) AND (Customers.CustZipCode > 94110))
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |