Программирование >>  Исключение дубликатов строк 

1 ... 117 118 119 [ 120 ] 121 122 123 ... 152


Внимание! Мы явно присвоили второй копии таблицы 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 строк)

iHifiiiiliEiSli

Irish Stew

Beef

, ,................ ...,.?

Irish Stew

Onion

IrJvSh Stew

Potatcj


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 строк).



1 ... 117 118 119 [ 120 ] 121 122 123 ... 152

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика