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

1 ... 86 87 88 [ 89 ] 90 91 92 ... 152


о- SELECT



LEFT

RIGHT

DISTINCT

ТипизированйО0 вырожфнив ----- ---нч


FROM

Ip- JOIN - имятаблицы - ON Условие поиска


OUTER

:>i;;;MiM;ll jljll>>>> ;ilW; l;ji,


LEFT

t-RIGHT J L OUTER

3sr 1

JOIN имятаблицы ON - VtnoAf© поиска -r-


Рис. 9.9. Простая операция JOIN трех таблиц

JOIN двух таблиц, заключенное в скобки, образует логическую таблииу, или внутренний набор результатов. Этот набор теперь помещается вместо имени первой простой таблицы на рис. 9.5, и данный процесс можно продолжить, заключая в скобки полное условие JOIN, добавляя затем еще одно ключевое слово JOIN, имя таблицы, ключевое слово ON и условие поиска, пока не будут получены все необходимые наборы результатов. Создадим запрос, для которого требуются данные из всех таблиц, представленных на рис. 9.7. (этот тип запроса можно использовать для создания отчета, в котором перечисляются все виды рецептов с деталями рецептов в каждом из видов):

7 need all of the recipe types, and then the matching recipe name, preparation instructions, ingredient names, ingredient step number, ingredient quantities, and ingredient measurements from my Recipes database, sorted in step number sequence . ( Нужны все виды рецептов, относящиеся к ним названия рецептов, указания по приготовлению, названия компонентов, номер этапа добавления компонента, количество компонента и единицы измерения компонента из базы данных Рецепты , отсортированные в последовательности номеров этапов .

Преобразование: Select the recipe class description, recipe title, preparation

instructions, ingredient name, recipe sequence number, amount, and measurement description from the recipe classes table left outer joined with the recipes table on recipe class ID, then joined with the recipe ingredients



table on recipe ID, then joined with the ingredients table on ingredient ID, and then finally joined with the measurements table on measurement amount ID, order by recipe title and recipe sequence number (Выбрать описание вида рецепта, заголовок рецепта, указания по приготовлению, название компонента, порядковый номер рецепта, коли[ество и описание единиц измерения из таблицы Виды рецептов с левым внешним соединением с таблицей Рецепты по идентификатору вида рецептов, соединенной с таблицей Компоненты рецепта по идентификатору рецепта, соединенной с таблицей Компоненты по идентификатору компонента и, наконец, соединенной с таблицей единиц измерения по идентификатору единиц измерения, упорядоченные по заголовку рецепта и порядковому номеру рецепта)

Уточнение: Select the recipe class description, recipe title, preparation

instructions, ingredient name, recipe sequence number, amount, me measurement description from the recipe classes table left outer joined with the recipes table on recipe class ID, thett joined with the recipe ingredients table on recipe ID, thett joined with the ingredients table

on ingredient ID, and then finally joined with the nieasurements table on measurement amount ID,

order by recipe title recipe sequence number (Выбрать описание вида рецепта, заголовок рецепта, приготовление, название компонента, порядковый номер рецепта, количество, описание единиц измерения из Виды рецептов с левым внешним соединением с Рецепты по идентификатору вида рецептов, соединенной с Компоненты рецепта по идентификатору рецепта, соединенной с Компоненты

по идентификатору компонента, соединенной с Единицы измерения по идентификатору единиц измерения, упорядоченные по заголовку рецепта, порядковому номеру рецепта)

SQL SELECT Recipe Classes.RecipeClassDescription,

Recipes.RecipeTitle,Recipes.Preparation, Ingredients.IngredientName, Recipe Ingredients.RecipeSeqNo, RecipeIngredients.Amount, Measu rements.Measu rementDesc ription



FROM (((Recipe Classes

LEFT OUTER JOIN Recipes

ON Recipe.Classes.RecipeClassID =

Recipes.RecipeClassID) INNER JOIN RecipeIngredients ON Recipes.RecipelD =

RecipeIngredients.RecipelD) INNER JOIN Ingredients ON Ingredients.IngredientID =

Recipe.Ing redients.Ing redientID) INNER JOIN Measurements ON Measurements.MeasureAmountID =

RecipeIng redients.Measu reAmountID ORDER BY RecipeTitle, RecipeSeqNo

Действительно, можно заменить взятое в целом JOIN двух таблиц в любом месте, где можно в ином случае поместить просто имя таблицы. На рис. 9.9 предполагается, что необходимо вначале соединить первую таблицу со второй, а затем этот результат соединить с третьей таблицей. Также можно вначале соединить вторую и третью таблицы (в том случае, если третья таблица фактически имеет отношение ко второй таблице, но не к первой), а затем выполнить окончательное соединение с первой таблицей. На рис. 9.10 представлен этот альтернативный метод.


Типтировонное аыражвтв

i ii ijii.itii(iiijiri(i!ini!i

\Щ ihitij*iitHiiiii<Mrtiititiiiita


.<i **>;iWi! ;i!ib:<

имятоблицы


LEFT

RIGHT

JOIN

OUTER

имятоблицы

INNER

LEFT

RIGHT L OUTER

JOIN

и мя табл и ЦЫ

I ill f fiB li I

УЬловиф поиско

ON УЬловив поиска

Рис. 9.10. Соединение более чем двух таблиц

в альтернативной последовательности



1 ... 86 87 88 [ 89 ] 90 91 92 ... 152

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