|
Программирование >> Исключение дубликатов строк
Внимание! Мы явно присвоили второй копии таблицы Bowler (Игроки в боулинг) в подзапросе псевдоним, чтобы стало совершенно понятно, о чем идет речь. Специально не хотелось сравнивать со средним значением текушего игрока, что вызвало бы сбой при выполнении предиката > ALL. И сравнение хотелось выполнить только с другими игроками этой же команды. Бозо донных рецептов Display all the ingredients for recipes that contain carrots , ( Вывести на экран все компоненты рецептов, содержащих морковь .) Преобразование/ Select recipe title and ingredient name from the recipes Уточнение: table joined with the recipe ingredients table on recipe ID, and then joined with the ingredients table on ingredient ID where recipe ID in the (selectt©fl-ef recipe ID from the ingredients table joined with the recipe ingredients table on ingredient ID where ingredient name is == carrot) (Выбрать заголовок рецепта, название компонента из Рецепты , соединенной с Компоненты рецепта по идентификатору рецепта, соединенной с Компоненты по идентификатору компонента, где идентификатор рецепта в (Выбрать идентификатор рецепта из Компоненты , соединенной с Компоненты рецепта по идентификатору компонента, где название компонента = морковь)) SELECT Recipes.RecipeTitle, Ingredients.IngredientName FROM (Recipes INNER JOIN Recipe Ingredients ON Recipes.RecipelD = Recipe Ingredients.RecipelD) INNER JOIN Ingredients ON Ingredients.IngredientID = Recipe Ingredients.IngredientID WHERE Recipes.RecipelD IN (SELECT Recipe Ingredients.RecipelD FROM Ingredients INNER JOIN Recipe Ingredients ON Ingredients.IngredientID = Recipe Ingredients.IngredientID WHERE Ingredients.IngredientName = carrot) Внимание! Если поместить фильтр для carrot во внешнем соединении, то в выводе будет получен только компонент морковь . В этой задаче нам хотелось показать все компоненты из всех рецептов, в которых используется морковь, поэтому подзапрос является хорошим способом решения. Redpes.lngredients.UJith.CQrrots (16 строк)
Ciirrot Guintiess Beer Sahiion Filets in Parchment Paper j Salmon in** Sitlinon Filets in Birclimeiit Iiiper \ Clarrot ИЛИ Sabiion Bleti* in Parchment Paper h остальные строки Итоги в данной главе было приведено описание трех типов подзапросов, определенных в стандарте SQL,- скалярного, строкового и табличного. Мы также кратко обсудили использование строковых подзапросов, которые поддерживает пока еш,е не очень много коммерческих реализаций. Мы рассмотрели использование подзапроса для формирования выражения со столбцами в условии SELECT и обсудили простой пример, а затем ввели две агрегатные (обобшенные) функции, которые полезны для извлечения соответствуюш,ей суммарной информации из другой таблицы. Подзапросы можно использовать для создания сложных фильтров в условии WHERE. Мы рассмотрели простые сравнения, а затем ввели специальные ключевые слова для сравнений - IN, SOME, ANY, ALL и EXISTS,- которые нужны для построения предикатов в подзапросах. Подзапросы полезны для решения многих задач. В приведенных нами примерах подзапросы использовались для выражений со столбцами и для создания фильтров Задачи для самостоятельного решения Ниже приведены формулировки запросов и имена решений этих запросов в учебных базах данных. Попрактикуйтесь немного и разработайте SQL для ка>вдого запроса, а затем сверьте свой ответ с решением, которое сохранено нами в этих базах данных. Не беспокойтесь, если ваш синтаксис не совсем точно совпадает с синтаксисом сохраненных запросов,- важно, чтобы набор результатов был тем же. Бозо донных зокозов но зокупки 1. Display products and the latest date the product was ordered . ( Вывести на экран товары и самую последнюю дату, когда товар был заказан .) {Совет: Используйте агрегатную функцию МАХ.) Решение можно найти в Products Last Date (40 строк) 2. List customers who ordered bikes . ( Привести список клиентов, заказавших велосипеды .) {Совет: Постройте фильтр, используя IN.) Решение можно найти в Customers Order Bikes (23 строки). 3. Find all customers who ordered a bicycle but who did not ordered a helmet . ( Найдите всех клиентов, заказавших велосипед, но не заказавших шлем .) {Совет: Начните с предыдушего запроса и добавьте фильтр, используя NOT EXIST.) Решение можно найти в Customer Bikes No Helmets (2 строки). 4. What products have never been ordered? ( Какие товары никогда не заказывали? ) {Совет: Постройте фильтр, используя NOT IN.) Решение можно найти в Products Not Ordered (2 строки). Бозо донных огентство эстродных мероприятий 1. Show те entertainers and count of each entertainers engagements . ( Показать эстрадных артистов и количество ангажементов у каждого из них .) {Совет: Воспользуйтесь агрегатной функцией COUNT.) Решение можно найти в Entertainers Engagement Count (13 строк). 2. List customers who have booked entertainers who play country or country rock . ( Вывести список клиентов, которые подали заявки на эстрадных артистов, играюших музыку в стиле кантри или кантри-рок .) {Совет: Постройте фильтр, используя IN.) Решение можно найти в Customers Who Like Country (15 строк).
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |